我不能在mongoose中使用对象进行查询吗?

时间:2011-11-30 05:53:28

标签: object mongodb node.js criteria 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`

这是问题还是功能?

1 个答案:

答案 0 :(得分:1)

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

如果您始终在字段id.cidid.pidid.vid上查询,则应对所有字段进行复合索引 - 为每个字段创建单独的索引将无济于事很多,因为查询在执行期间一次只能使用1个索引。