我是NoSQL特别是mongodb的新手。我有一个集合
{
"page1":{
"content":"some content for page1",
"pageId":"1"
},
"page2":{
"content":"some content for page2",
"pageId":"2"
}
}
我想找到page1的内容和pageId。 我试过像
这样的东西db.mycollection.find({"page1":{"pageId":"1"}})
db.mycollection.find({"pageId":"1"})
我得到的结果是它不能满足我的需要,特别是零结果。
感谢 Donquixote
答案 0 :(得分:2)
MongoDB使用点表示法来访问嵌套对象。要查找pageId,您应该按如下方式更新查询:
db.mycollection.find({"page1.pageId":"1"})
欲了解更多信息,请阅读以下内容:
答案 1 :(得分:0)
这只是JSON语法,它不应该与你在python,ruby,perl等中看到的不同。你想要:
db.mycollection.find({ "page1.pageId": 1 })
这将匹配包含字段“pageId”且值为1的字段“page1”的文档。
db.mycollection.find({ page1: { pageId: 1 } })
但是,我希望整个“page1”字段与您提供的子文档完全匹配,即{pageId:1}。这不是匹配。
db.mycollection.find({ page1: { content: "some content for page 1", pageId: 1 } })
是否与子文档显式匹配,但可能不是您在查询中想要的内容。
请参阅在线documentation了解更多信息
答案 2 :(得分:0)
在您的mongo shell上运行此命令:
db.mycollection.find({page1:{$exists:true}},{"page1.content":true,"page1.pageId":true,"_id":false}).pretty();