![](/img/trans.png)
[英]How to use feathers mongoose query update with $not and $elemMatch
[英]How can I query with elemMatch in mongoose?
我正在尝试根据以下 mongodb 查询在我的 mongodb 集合中查询用户:
db.users.find("boxes":{"$elemMatch":{"a":"foo","b":"bar"}})
如果我直接使用 mongodb 查询,这会起作用。 它返回任何拥有带有 a="foo" 和 b="bar" 的框的用户。
我如何在 mongoosejs 中查询这个? 我试过使用User.find().elemMatch
但它不起作用。 无论如何,这似乎只是在预测结果。 不过,原始的 mongodb 查询确实对我有用,我只需要能够在 mongoosejs 中复制它。 有任何想法吗?
猫鼬中的 elemMatch 文档在这里。
我没有测试过,但看起来你会想要做
User.find().elemMatch("boxes", {"a":"foo","b":"bar"})
Tim 的回答是正确的,但是如果有人对 mongoose 为 mongo native API 上的查询生成的内容感到困惑,我用它来解决这个问题
mongoose.set('debug', function (coll, method, query, doc) {
console.log(coll + " " + method + " " + JSON.stringify(query) + " " + JSON.stringify(doc));
});
这是使用 $elemMatch 的正确方法。 我无法测试您的确切查询,因为我没有您的架构。 但是有几种方法:
let users = await User.find({
pet_names: {
$elemMatch: {
$eq: 'Rex'
}
}
});
但在您的情况下,您似乎正在尝试查询数组元素的属性。 你也可以这样做:
db.users.find({ "boxes.a": "foo", "boxes.b": "bar"});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.