我的收藏是这样的
{
_id :"",
name:[
{
firstName:"",
lastName:"",
}
]
}
我需要在文档中找到匹配的firstName。 如何在查询中实现这一点? 我是mongodb的新手。
答案 0 :(得分:2)
答案 1 :(得分:2)
@Sushant Gupta提供了正确的答案,但我会说你也可以做更多的味道:
db.collection.find({'name.firstName': 'Raj'}, {'name.$':1})
至:matching firstName in the documents
。
这背后的关键是MongoDB会处理文档中的单个多键出现,就像普通的平面字段一样,允许你像这样查询它们。
你看到的第二个参数实际上是一个投影(http://docs.mongodb.org/manual/reference/projection/elemMatch/),它告诉MongoDB基本上投出FIRST(需要使用聚合框架,如果你想要更多)匹配来自的name
子文档主要的一个。
值得注意的是,如果您添加两个或更多个多键字段,如下所示:
db.collection.find({'name.firstName': 'Raj', 'name.lastName': ''}, {'name.$':1})
然后,您需要使用$elemMatch
,对于像这样的小型单字段查询,或者您有意在文档中搜索两个值的所有多键字段,点符号(http://docs.mongodb.org/manual/reference/glossary/#term-dot-notation效果很好。
答案 2 :(得分:0)
这就是解决问题的方法:
db.MyCollection.find( { name : { $elemMatch: { firstName : "valueGoesHere"} } } )