如何在mongoose中使用elemMatch进行查询?

bra*_*don 10 mongoose node.js

我正在尝试基于以下mongodb查询在我的mongodb集合中查询用户:

db.users.find("boxes":{"$elemMatch":{"a":"foo","b":"bar"}})

如果我直接用mongodb查询,这是有效的.它返回任何具有a ="foo"和b ="bar"的框的用户.

我如何在mongoosejs中查询?我尝试过使用User.find().elemMatch它但不起作用.无论如何,这似乎只是预测结果.原来的mongodb查询确实对我有用,我只需要能够在mongoosejs中复制它.有任何想法吗?

小智 10

这里有关于mongoose的elemMatch的文档.
我没有测试它,但看起来你会想做

User.find().elemMatch("boxes", {"a":"foo","b":"bar"})


bra*_*don 6

蒂姆的答案是正确的,但是如果有人对猫鼬在mongo原生API上查询产生的东西感到困惑,我用它来弄清楚

mongoose.set('debug', function (coll, method, query, doc) {
    console.log(coll + " " + method + " " + JSON.stringify(query) + " " + JSON.stringify(doc));
});
Run Code Online (Sandbox Code Playgroud)