我不能用对象来查询mongoose吗?

在使用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` 

这是一个问题还是一个特征?

我不认为用这种方式查询对象(嵌套对象格式)与mongoose一起工作,因为底层驱动程序(mongo-node-native)还不支持它。

如果你总是在字段id.cidid.pidid.vid上查询,你应该对所有的字段进行复合索引 – 为每个字段创build单独的索引不会有太大的帮助,因为查询只能使用1索引在执行过程中。