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 } };
而当情况不是这样的话,当然没有比赛。