Как запросить последние комментарии в Mongodb - PullRequest
0 голосов
/ 19 ноября 2011

Почтовый документ выглядит следующим образом:

{
  ...
  comments: [{
    _id:...
    body:...
    createDate:...
    },
    ...
  ]
}

Как получить последние 10 комментариев из коллекции?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2011

Нет возможности частично выбрать элементы из встроенного документа. Независимо от того, что он вернет весь массив документов. Вы должны сделать фильтр в коде приложения. Это единственный способ.

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

0 голосов
/ 19 ноября 2011

Если ваши комментарии всегда находятся в предсказуемом порядке (т. Е. Сначала первым или самым последним), то вы можете использовать оператор $slice для возврата только подмножества полного поля comments при запросе:

test> db.foo.save({name: "hello", comments: [1, 2, 3, 4, 5]})
test> db.foo.find({}, {comments: {$slice: 3}})
{ "_id" : ObjectId("4ec7d1c8e72da9b6f31e2528"), "name" : "hello", "comments" : [ 1, 2, 3 ] }
test> db.foo.find({}, {comments: {$slice: -3}})
{ "_id" : ObjectId("4ec7d1c8e72da9b6f31e2528"), "name" : "hello", "comments" : [ 3, 4, 5 ] }

Подробнее об управлении возвращенными полями вы можете прочитать на http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...