2014-02-12 6 views
1

Я использую Node.js с модулем Mongoose и столкнулся с проблемой.node.js, mongoose, как найти в массиве объектов по нескольким идентификаторам

У меня есть схемы которым макет выглядит этой

_id: '', 
foo: '', 
bar: '', 
fb: [{ 
    id: '' 
}] 

Как найти все предметы в коллекции для соответствия FB [0] .id плюс переходящих в массиве идентификаторов?

Это я попробовал (найти метод() с помощью следующего запроса):

{'fb[0].id': {$in: friendsIDList}} 

И это:

{'fb': {$in: [{id: friendsIDList}]} } 

И даже это

{'fb': {$in: {$in: friendsIDList}}} 

Чтобы быть более ясным, У меня есть объект-пользователь, который содержит свои данные FB в параметре fb, но это массив, содержащий только один объект с данными. Теперь я получаю список идентификаторов друзей и хочу запросить всех друзей пользователя.

Извините за мой английский кстати.

ответ

1

У MongoDB есть что-то под названием dot notation, поэтому вы можете запросить 'foo.0.id': 'id'.

Испытано следующим образом:

> db.users.insert({foo: 'foo', bar: 'bar', fb: [ { id: '456' } ]}) 
> db.users.find({'fb.0.id': '456'}).pretty() 
{ 
    "_id" : ObjectId("52fb695e403fb143985459dc"), 
    "foo" : "foo", 
    "bar" : "bar", 
    "fb" : [ 
     { 
      "id" : "456" 
     } 
    ] 
} 
+0

что значение '0' в 'fb.0.id'? – SharpCoder

+0

Свойство id первого объекта в массиве свойства fb. Как и в fb [0] .id = 456 в большинстве языков программирования –

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