2011-12-17 3 views
7

Допустим, у меня есть документ, как это:MongoDB запрашивая объекта недвижимости в список

{ 
    _id: "cow", 
    comments: [ 
     {user: "karl", comment: "I like cows.", at: /*a date*/}, 
     {user: "harry", comment: "Cows are the best.", at: /*a date*/} 
    ] 
} 

Теперь я хочу, чтобы собрать все комментарии, которые "karl" оставили в моей дб. Или только те, что были на определенную дату. "comments" индексируются, как я могу запросить это?

ответ

9

Что-то вроде:

db.foo.find({"comments.user":"karl", "comments.at":{$gt:{dateObject}}); 

Не проверял, но вы получите идею; вы можете развернуть предметы как таковые.

Я рекомендовал бы идти через этот сайт, как это ведет вас через много интерактивных учебных пособий: Interactive Tutorial

6

Вы должны использовать $ elemMatch, чтобы соответствовать более одного условия в тот же документ.

Что-то вроде:

db.foo.find({comments: {"$elemMatch": {user: "karl", at: {$gt:{dateObject}}}}) 

См here для более подробной информации.

+0

Ваша ссылка приводит к экрану входа в систему слияния .... – drevicko

+1

сайт mongodb изменил свои URL-адреса документации - в любом случае я обновил свой ответ с чем-то, что связано с новым сайтом. –

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