当我在使用mongoose查询时使用对象作为条件时出现问题。
var id = {
cid: 111,
vid: 222,
pid: 333
};
// the following doesn't work at all
Category.find({id: id}, function(err, docs) {
//----returns nothing.
});
// while
Category.find({'id.pid': id.pid, 'id.cid': id.cid,'id.vid': id.vid}, function(err, docs) {
//----returns some docs.
});
// does work`
这是问题还是功能?
答案 0 :(得分:1)
我不认为以这种方式查询对象(嵌套对象格式)与mongoose一起工作,因为底层驱动程序(mongo-node-native)尚不支持它。
如果您始终在字段id.cid
,id.pid
和id.vid
上查询,则应对所有字段进行复合索引 - 为每个字段创建单独的索引将无济于事很多,因为查询在执行期间一次只能使用1个索引。