簡體   English   中英

如何在另一個查詢(MongoDB)中使用查詢結果作為匹配參數條件?

[英]How to use result of a query as match parameter conditions in another query (MongoDB)?

我做了一個聚合查詢,查詢的結果是這樣的:

{ "_id" : "Tom" }
{ "_id" : "Jack" }

我需要在“host_name”字段中顯示所有包含 Tom 和 Jack 的記錄。 我該如何 go 關於這個?

我嘗試將其轉換為數組並將其存儲在名為 k 的變量中並在匹配聚合中使用它,但似乎不起作用,這就是我所做的:

k = db.abnb.aggregate([{$match: {"host_is_superhost": "t"}}, {$group: {"_id": "$host_name"}}, {$limit: 2} ]);
db.abnb.aggregate([ { $match : { host_name : k } } ])

將查詢結果放入列表並使用$in

from pymongo import MongoClient
#
# Set some data up
#
db = MongoClient()['mydatabase']
db.abnb.insert_many([{'host_name': 'Tom'}, {'host_name': 'Dick'}, {'host_name': 'Harry'}, {'host_name': 'Jack'}])
agg1 = [{"_id": "Tom"}, {"_id": "Jack"}]
#
# This is the meat of it
#
result = db.abnb.find({'host_name': {'$in': [x['_id'] for x in agg1]}})

print(list(result))

印刷:

[{'_id': ObjectId('606dfa4e4252a193402ce182'), 'host_name': 'Tom'}, {'_id': ObjectId('606dfa4e4252a193402ce185'), 'host_name': 'Jack'}]

字段host_name是一個臨時變量,它只能在您的聚合中訪問。

如果要保存聚合的結果,則需要使用$out (請參閱文檔)

暫無
暫無

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

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