Mongoose - find():搜索选项中的对象不起作用

Mongoose - find(): object inside search options is not working

本文关键字:选项 对象 不起作用 搜索 find Mongoose      更新时间:2023-09-26

我有一个猫鼬模式,看起来像这样:

var mySchema = new mongoose.Schema({
  ...
  metadata: {
    isDeleted: {
      type: Boolean,
      default: false
    },
    ...
  }
});

我想获得元素列表在我的mongodb数据库应用过滤器,所以我有以下对象:

var searchOptions = { metadata: { isDeleted: false } };

总是需要将metadata.isDeleted值设置为false,除了稍后将添加的其他参数之外,在执行查询之前:

var objQuery = myModel.find(searchOptions, '-metadata');

首先,我在Schema中的metadata对象之外有isDeleted属性,并且

var searchOptions = { isDeleted: false };

过去很管用。但这是因为我决定有isDeleted在我的metadata对象是不工作的,不能弄清楚为什么…

考虑到您在模式清单中使用省略号,似乎很可能在metadata属性下有比isDeleted更多的属性。所以你的对象应该是:

var searchOptions = { "metadata.isDeleted": false } };

这样做的原因是,否则查询将查找具有"完全"answers"仅"metadata键下命名的属性的文档:

var searchOptions = { metadata: { isDeleted: false } };

如果不是这样,那么当然没有匹配