【发布时间】:2019-11-09 15:35:52
【问题描述】:
我正在尝试查找所有包含“comment”字符串的文档 看起来像这样的文档中的“COMMENT”字段
{
"_id": "5d10aaf8130d5f9e386be977",
"info": {
"files": ["filename"],
"bands": [{
"metadata": {
"": {
"COMMENT": "comment"
}
}
}]
},
"file": "filename"
}
我试过这个查询,一切似乎都很好
comment = coll.find(
{"info":
{"bands":
{"$elemMatch":
{ "0":
{"metadata":
{"":
{"COMMENT":
{
"comment"
}
}
}
}
}
}
}
}
)
如果我尝试查看光标规范,我会在其中看到“设置”属性,但我不知道为什么。
> _Cursor__spec:{'info': {'bands': {...}}} 'info':{'bands': {'$elemMatch': {...}}} 'bands':{'$elemMatch': {'0': {...}}}
> '$elemMatch':{'0': {'metadata': {...}}} '0':{'metadata': {'': {...}}}
> 'metadata':{'': {'COMMENT': set([...])}} '':{'COMMENT':
> set(['comment'])} 'COMMENT':set(['comment'])
> 63587936:'comment'
最后,如果我尝试这样做
while (comment.next()):
print(anything)
我收到以下错误:
bson.errors.InvalidDocument: 无法编码对象: set(['comment']), 类型:
如果我更改查询的以下部分
{"$elemMatch": { "0":
到
{"$elemMatch": { 0:
甚至只是
{ 0:
错误变为(光标保留“set”属性):
bson.errors.InvalidDocument:文档必须只有字符串键,键 为 0
P.S.:我尝试了其他不包含数组或复杂嵌套的查询没有任何问题
【问题讨论】:
-
您的搜索包含“评论]”(带有“]”)。是不是搞错了?
-
是的,我在 Stack 上写错字了,我会改正的,谢谢!
标签: mongodb python-2.7 pymongo