2014-02-17 3 views
-1

У меня есть MongoDB colllection каккак получить записи от mongodb?

{ 
    id : 'd8fsd7f8sdfsd8f8ds7fsd8', 
    books : [ 
      {"author" : "['b1']" , "date" : 2-3-00, name: 'a'}, 
      {"author" : "['b1', 'b2']" , "date" : 4-10-00, name: 'b'}, 
      {"author" : "['b2']" , "date" : 5-3-00, name: 'c'}, 
      {"author" : "['b2']" , "date" : 6-12-00, name: 'd'}, ] 
} 

Как я могу получить данные содержат автора «b2» по Монго запрос как

{ 
    id : 'd8fsd7f8sdfsd8f8ds7fsd8', 
    books : [ 
     {"author" : "['b1', 'b2']" , "date" : 4-10-00, name: 'b'}, 
      {"author" : "['b2']" , "date" : 5-3-00, name: 'c'}, 
      {"author" : "['b2']" , "date" : 6-12-00, name: 'd'}, ] 
} 
+2

Вы еще что-нибудь пробовали? Если да, то что и куда это пошло не так? – Sammaye

+0

Возможный дубликат [Поиск элементов в массиве и возврат соответствующих элементов в mongodb] (http://stackoverflow.com/questions/16752316/searching-for-elements-in-array-and-return-matching-elements-in- mongodb) – WiredPrairie

ответ

1

Я предполагаю, что ваше имя коллекции books. Вы можете это сделать aggregation рама

db.books.aggregate(
    { $unwind: '$books'}, 
    { $match: {'books.book1': {$eq: "b2"}}}, 
    { $group: {books: {$push: '$books.book1'}}}) 
+1

Это на самом деле не делает этого, обратите внимание на то, как вложенный файл отфильтровывается. – Sammaye

+0

@Sammaye. Я не понимал этого, спасибо –

+0

. Я имел в виду, что вам нужно отфильтровать поддокумент, MongoDB не сделает этого для вас. – Sammaye

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