2016-01-10 4 views
1

Я новичок в MongoDB/Mongoose, я пытаюсь найти все документы, в которых их массив usersInvited содержит некий UID.Поиск элемента в массиве в документе

Пример: поиск по этой коллекции с UID=123 должен вернуть id1, id2

[ 
    { 
    "_id": "id1", 
    "usersInvited": [ 
     { 
     "UID": "123" 
     } 
    ] 
    }, 
    { 
    "_id": "id2", 
    "usersInvited": [ 
     { 
     "UID": "123" 
     } 
    ] 
    }, 
    { 
    "_id": "id3", 
    "usersInvited": [ 
     { 
     "UID": "abc" 
     } 
    ] 
    } 
] 

ответ

2

Вы можете непосредственно запросить против UID поля в пределах usersInvited элементов массива с помощью точечной нотации:

MyModel.find({'usersInvited.UID': '123'}, (err, docs) => {...}); 

Если какой-либо из элементов массива имеет значение UID'123', будет включен в документе.

+0

Как эта работа 'UID' была' _id'? – bubakazouba

+0

@bubakazouba: Вы заменили '' 123'' на '{'$ oid': '123'}', хотя я не использую Mongo и просто читаю документы. – danneu

1
var query = FriendHittups.find({ 
    usersInvited: { 
    $elemMatch: { 
     "UID": "123" 
    } 
    } 
}); 

query.exec(function (err, results){ 

}); 
Смежные вопросы