我有一个条目集合看起来像:
{
"userid": 1,
"contents": [
{ "tag": "whatever", "value": 100 },
{"tag": "whatever2", "value": 110 }
]
}
Run Code Online (Sandbox Code Playgroud)
我希望能够查询该集合并仅返回数组的一部分:与查询匹配的部分.我正在尝试使用$ position运算符来执行此操作,但到目前为止它还没有工作.
更准确地说,我想做的是:
collection.find({'contents.tag':"whatever"},{'contents.$.value':1})
Run Code Online (Sandbox Code Playgroud)
因此,我希望只有与匹配查询的数组中的条目对应的值,在这种情况下为100.
你知道什么是错的吗?我在想,也许$运算符只能用于更新而不能用于查询.有谁知道吗?
谢谢 !
是的,你是对的 - 位置运算符用于更新对象.
现在的解决方案是返回数组,在应用程序中拉出字段.
此功能有一个开放的增强请求(在查询中):
https://jira.mongodb.org/browse/SERVER-828
有关位置运算符的更多信息,请参阅:
http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator