Mongoose – find():search选项内的对象不起作用

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

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

我想获得我的mongobd数据库中应用filter的元素列表,所以我有以下对象:

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

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

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

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

 var searchOptions = { isDeleted: false }; 

用来完美的工作。 但是,因为我决定在我的metadata对象,是不是工作,并不能找出原因…

看起来很可能在模式列表中使用了elipsis,在metadata属性下有比isDeleted更多的属性。 所以你的对象应该是:

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

原因在于否则查询正在查找具有“完全”和“仅” metadata键名下的属性的文档:

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

而当情况不是这样的话,当然没有比赛。