如何使用Python根据List字段中元素的值检索Mongo文档



我有一个MongoDB集合,其中包含有文本字段和列表字段的文档:

db = client.PraxisDB
db.create_collection('Test') 

我在中输入三份文件

kollection = db.Test
kollection.insert_one({'text1': 'aaa','list1' : [' ',1,2,3,4]})    
kollection.insert_one({'text1': 'bbb','list1' : [' ',1,6,7,8]})      
kollection.insert_one({'text1': 'ccc','list1' : [' ',19,10,11,12]})   

我可以看到所有的都正确插入

c = kollection.find()
for crnt in c:
print(crnt)
---
{'_id': ObjectId('61e543057aeccaf5a5345073'), 'text1': 'aaa', 'list1': [' ', 1, 2, 3, 4]}
{'_id': ObjectId('61e543057aeccaf5a5345074'), 'text1': 'bbb', 'list1': [' ', 1, 6, 7, 8]}
{'_id': ObjectId('61e543057aeccaf5a5345075'), 'text1': 'ccc', 'list1': [' ', 19, 10, 11, 12]}

只有当我指定整个列表时,我才能检索单个记录

c = kollection.find({'list1': {'$eq': [' ',1, 2, 3, 4]}},{'_id':0})
for crnt in c:
print(crnt)
-----
{'text1': 'aaa', 'list1': [' ', 1, 2, 3, 4]}

我希望在列表字段的第二个元素中检索两个值为1的文档。为此,我尝试了:

c = kollection.find({'list1'[1]: {'$eq': 1}},{})
for crnt in c:
print(crnt)

此查询未返回任何文档。我应该如何更改我的查询?请帮助

找到了一种方法。

c = kollection.find({'list1.1': {'$eq': 1}},{'_id':0})
for crnt in c:
print(crnt)
-----
{'text1': 'aaa', 'list1': [' ', 1, 2, 3, 4]}
{'text1': 'bbb', 'list1': [' ', 1, 6, 7, 8]}

应该是显而易见的!但对我来说不是

最新更新