2014-01-30 5 views
1

Я новичок в деле NoSQL, особенно mongodb. У меня есть коллекциякак найти данные в mongodb

{ 
    "page1":{ 
      "content":"some content for page1", 
      "pageId":"1" 
      }, 
    "page2":{ 
      "content":"some content for page2", 
      "pageId":"2" 
      } 

} 

Я хочу найти контент и pageId для страницы1. Я пытался что-то вроде

db.mycollection.find({"page1":{"pageId":"1"}}) 
db.mycollection.find({"pageId":"1"}) 

и я получил результат, который не удовлетворяет мои потребности, в частности, нулевой результат.

благодаря Donquixote

ответ

2

MongoDB использует точечную нотацию для доступа к вложенным объектам. Для того, чтобы найти PageId, вы должны обновить свой запрос следующим образом:

db.mycollection.find({"page1.pageId":"1"}) 

Для получения более подробной информации читайте следующее:

0

Это всего лишь JSON синтаксис, который не должен отличаться от того, что вы видите в python, ruby, perl и т. д. Вы хотите:

db.mycollection.find({ "page1.pageId": 1 }) 

Это будет соответствовать документ с полем «page1», содержащий поле «PageId» со значением 1.

db.mycollection.find({ page1: { pageId: 1 } }) 

Это, однако было бы ожидать, что все поле «стр.1» точно соответствует поддокументу, который вы ему дали, будучи {pageId: 1}. Это не совпадение.

db.mycollection.find({ page1: { content: "some content for page 1", pageId: 1 } }) 

Явное соответствие для поддокумента, но скорее всего не то, что вы хотите в запросе.

Смотрите Выполнить онлайн documentation для более exaples

0

этой команды на Монго оболочке:

db.mycollection.find({page1:{$exists:true}},{"page1.content":true,"page1.pageId":true,"_id":false}).pretty(); 
+0

@Muddit Привет Muddit он работал, но есть какие-либо идеи, как это будет применяться в PHP с использованием массивы? – noodlesegg

+0

У меня нет идеи, как в PHP это можно реализовать. –

Смежные вопросы