【发布时间】:2021-09-10 16:15:11
【问题描述】:
我有一个字典列表,其中包含一个名为 unique_field_id 的字段,我想获取该列表中每个项目的每个文档。
一种方法是使用 for 循环并像这样调用 find_one() 查询:
my_list = [{'unique_field_id': 1}, {'unique_field_id': 2}, {'unique_field_id': 3}]
document_list = list()
for el in my_list:
document = db.collection_name.find_one(el)
document_list.append(document)
另一种更好更快的方法是这样做:
my_list = [{'unique_field_id': 1}, {'unique_field_id': 2}, {'unique_field_id': 3}]
my_list_values = [d['unique_field_id'] for d in my_list]
document_list = db.collection_name.find({'unique_field_id': {'$in': my_list_values}})
这对我来说很好,直到我的文档的唯一字段更改为两个字段。
现在我有一个字典列表,其中包含两个字段 unique_field_id 和 other_unique_field_id,它们作为我文档的唯一字段一起索引。
如果我想采用第一种方法,它会是这样的:
my_list = [{'unique_field_id': 1, 'other_unique_field_id': 'a'}, {'unique_field_id': 2, 'other_unique_field_id': 'b'}, {'unique_field_id': 3, 'other_unique_field_id': 'c'}]
document_list = list()
for el in my_list:
document = db.collection_name.find_one(el)
document_list.append(document)
但我需要以第二种方式进行,并检查 $in 语句以获取两个字段的索引,而不是一一进行,因为它要快得多。
我该怎么做?
另外我认为这个问题有一个我不完全理解的有用答案。
Mongo $in with compound index
【问题讨论】:
标签: mongodb mongodb-query pymongo