我有一个像这样的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
无效,无法找出原因......
答案 0 :(得分:3)
在您的架构列表中使用elipsis似乎很可能在isDeleted
属性下有比metadata
更多的属性。所以你的对象应该是:
var searchOptions = { "metadata.isDeleted": false } };
这样做的原因是否则查询正在查找带有"确切"的文档。和"只有"在metadata
键下命名的属性:
var searchOptions = { metadata: { isDeleted: false } };
如果情况并非如此,那么当然没有匹配。