我试图根据以下mongodb查询在我的mongodb集合中查询用户:
db.users.find("boxes":{"$elemMatch":{"a":"foo","b":"bar"}})
如果我直接用mongodb查询,这是有效的。它返回任何具有=" foo"的框的用户。和b =" bar"。
如何在mongoosejs中查询?我尝试过使用User.find().elemMatch
,但它不起作用。无论如何,这似乎只是预测结果。原来的mongodb查询确实对我有用,我只需要能够在mongoosejs中复制它。有什么想法吗?
答案 0 :(得分:9)
mongoose中elemMatch的文档是here 我没有对它进行过测试,但看起来你似乎想做
User.find().elemMatch("boxes", {"a":"foo","b":"bar"})
答案 1 :(得分:4)
mongoose.set('debug', function (coll, method, query, doc) {
console.log(coll + " " + method + " " + JSON.stringify(query) + " " + JSON.stringify(doc));
});
答案 2 :(得分:0)
这是使用 $elemMatch 的正确方法。我无法测试您的确切查询,因为我没有您的架构。但有几种方法:
az resource show --ids "the-id" --query properties.actionGroups.groupIds
但在您的情况下,您似乎正在尝试查询数组元素的属性。你也可以这样做:
let users = await User.find({
pet_names: {
$elemMatch: {
$eq: 'Rex'
}
}
});