簡體   English   中英

如何在 mongoose 中使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM