MongoDB Запрос свойства объекта в списке - PullRequest
7 голосов
/ 17 декабря 2011

Допустим, у меня есть такой документ:

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

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

Ответы [ 2 ]

11 голосов
/ 17 декабря 2011

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

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

Не проверял, но вы поняли идею;вы можете углубляться в элементы как таковые.

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

6 голосов
/ 17 декабря 2011

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

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

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

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

...