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

时间:2015-09-23 10:31:46

标签: javascript node.js mongodb mongoose mongodb-query

我有一个像这样的mongoose Schema:

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');

首先,我在模式中的isDeleted对象之外有metadata属性,

var searchOptions = { isDeleted: false };

以前工作得很好。但是,因为我决定在我的isDeleted对象内部metadata无效,无法找出原因......

1 个答案:

答案 0 :(得分:3)

在您的架构列表中使用elipsis似乎很可能在isDeleted属性下有比metadata更多的属性。所以你的对象应该是:

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

这样做的原因是否则查询正在查找带有"确切"的文档。和"只有"在metadata键下命名的属性:

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

如果情况并非如此,那么当然没有匹配。