![](/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.