查詢嵌入列表中的數組 (Querying for array in embedded list)


問題描述

查詢嵌入列表中的數組 (Querying for array in embedded list)

假設我有一個類似於以下內容的 mongo 文檔:

{
   'foo':1
   'listOfLists' : [ [1,2],[3,4] ]
}

(是的,我知道這不是它“真正”的樣子,但它應該足夠簡單,便於解釋。)

如果我想編寫一個查詢來檢查listsOfLists列表對像是否包含[3,4]的組合,我該怎麼做呢?

可以我做了類似

collection.find({'listsOfLists' : {'$elemMatch' : [3,4] } })

參考解法

方法 1:

collection.find({ 'listsOfLists': [3,4] }).

It's just a "direct match" on the property. MongoDB will look at each array element automatically. You don't need $elemMatch here.

If you were to use it, you need an operator expression, such as $eq:

collection.find({ 'listsOfLists': { '$elemMatch': { '$eq': [3,4] } } }).

But that of course is not required unless there are "two or more" conditions that actually need to match on the array elements. Which is what $elemMatch is actually for.

(by K.NiemczykNeil Lunn)

參考文件

  1. Querying for array in embedded list (CC BY‑SA 2.5/3.0/4.0)

#pymongo #Python #mongoDB #mongodb-query






相關問題

InvalidDocument:無法編碼對象:<pymongo.cursor.Cursor 對象位於 (InvalidDocument: Cannot encode object: <pymongo.cursor.Cursor object at)

為什麼 PyMongo 將 uuid.uuid1() 編碼為 BSON::Binary? (Why does PyMongo encode uuid.uuid1() as a BSON::Binary?)

一起使用 MongoEngine 和 PyMongo (Use MongoEngine and PyMongo together)

從 mongoDB 中提取信息 (Extracting information from mongoDB)

Pymongo, truy vấn tổng hợp nào trong số các truy vấn tổng hợp này sẽ hoạt động tốt hơn (Pymongo, which of these aggregare query will perform better)

查詢嵌入列表中的數組 (Querying for array in embedded list)

使用pymongo在mongodb中多次查詢單個字段的執行速度 (Querying single field multiple times execution speed in mongodb using pymongo)

使用 pymongo 用 CSV 數據更新 mongodb (update mongodb with CSV data using pymongo)

如何刪除 mongodb 和 pymogo 上的子文檔 (How to delete a subdocument on mongodb and pymogo)

有沒有辦法在 MongoDB 的一個語句中添加遞增的 id? (Is there a way to add an incrementing id in one statement in MongoDB?)

刪除文檔中的父對象 (Remove parent object in document)

MongoDB:跨文檔列表中的項目不同 (MongoDB: distinct of items inside a list across documents)







留言討論