簡體   English   中英

使用 Pymongo 查找數組內的文檔

[英]Find document that is inside an array using Pymongo

我對 Mongo 真的很陌生,我一直在嘗試使用 pymongo 提取數組內的文檔,但沒有任何結果。 下圖顯示了 mongos 數據庫的結構。

在此處輸入圖片說明

我只想提取例如屬於“數據”數組的第一個或第二個文檔。 我已經嘗試過以下代碼:

data = condition.find_one({},{'data.ref':2})
data = condition.find({ 'data': {'$eq': '1'} })
data = condition.find({'data.ref':1})
data = condition.find({'_id':1},{'data.ref':1})
data = condition.find({'data.ref':1},{'trq.min':50})
data = condition.find({ "data" : { "$elemMatch" : { "ref" : 1} }})

我將不勝感激任何參考或任何幫助,以便從此數組中提取單個文檔。

您可以使用$elemMatch(projection)投影所需的數組值。

請注意,我只是將光標轉換為列表以便於處理。

基於以下文件:

{'_id': 1,
 'data': [{'1': {'trq': {'max': 100, 'min': 50}}, 'ref': 1},
          {'2': {'trq': {'max': 50, 'min': 50}}, 'ref': 2}],
 'max': 100,
 'min': 30}

以下查詢將返回第一個 ref 並取消 id:

mlist1 = list(coll.find({}, {
    '_id': 0,
    'data': {'$elemMatch': {'ref': {'$eq': 1}}}
}))

結果:

{'data': [{'1': {'trq': {'max': 100, 'min': 50}}, 'ref': 1}]}

對於第二個:

mlist1 = list(coll.find({}, {
    '_id': 0,
    'data': {'$elemMatch': {'ref': {'$eq': 2}}}
}))

結果:

{'data': [{'2': {'trq': {'max': 50, 'min': 50}}, 'ref': 2}]}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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