我有一个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]}
应该是显而易见的!但对我来说不是