如何在mongodb中找到一些数据

时间:2014-01-30 08:20:15

标签: mongodb

我是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

3 个答案:

答案 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();