0

У меня есть коллекция "users", где хранятся имя пользователя, пароль, вопросы. «Вопросы» - это массив документов. Я хотел бы получить всех пользователей с некоторыми вопросами: i.e имя пользователя, пароль и массив вопросов (часть) Как я могу это сделать с консоли или java? enter image description hereКак получить некоторые документы массива в MongoDB

Здесь я хочу, чтобы получить имя пользователя, пароль и первый документ вопросов, который {вопрос: «dawdaw», ответил: 0}

+1

Не используйте изображения для предоставления кода образцы. Включите сам код (отформатирован как код), чтобы другие могли легко скопировать и вставить его для воспроизведения самой проблемы. – JohnnyHK

+0

Возможный дубликат http://stackoverflow.com/questions/3985214/retrieve-only-the-queried-element-in-an-object-array-in-mongodb-collection – JohnnyHK

ответ

1

Вы можете использовать кусок как этот

db.users.find({},{"questions":{$slice:1}}) 

Надежда это help

1

$elemMatch Прогноз для получения желаемого результата. Следующие find() операции запросов для всех документов, где проекция $elemMatch возвращает только первый соответствующий элемент questions массива, где question поле имеет значение "dawdaw" и answered имеет 0 значение:

db.users.find({}, 
    { 
     "username": 1, "password": 1, 
     "questions": { 
      "$elemMatch": { 
       "question" : "dawdaw", 
       "answered" : 0 
      } 
     } 
    } 
); 

От приведенный образец, операция возвращает следующий документ:

/* 0 */ 
{ 
    "_id" : ObjectId("561a84ffaa233b38d803509a"), 
    "username" : "[email protected]", 
    "password" : "asd", 
    "questions" : [ 
     { 
      "question" : "dawdaw", 
      "answered" : 0 
     } 
    ] 
}