2014-01-11 3 views
0

У меня есть документы со следующей структурой:найти несколько документов от одной и той же ObjectId

модель:

var relationID = Schema({ 
    _id: {type: Schema.Types.ObjectId} 
}); 

    var schemaName = Schema({ 
    relations:[relationID], 
    meta: {},  
    modificationDate: {type: Date, "default": Date.now}}); 

документ 1:

doc: { 
_id: 52cdb245f5116f8567000004 

relations: 
    [{ 
     _id: 52cd9930a22c865a44000006 
    }] 
} 

документ 2:

doc: { 
    _id: 52d01bf303aaa8f473000005 

    relations: 
     [{ 
      _id: 52cd9930a22c865a44000006 
     }] 
} 

Оба документа имеют одинаковые идентификаторы отношений. Я хочу выбрать их с:

exports.detail = function (req, res) { 
    var condition, fields, options; 
    condition = {relationsID: { $in: [ "52cd9930a22c865a44000006"] } } 

     fields = {}, 
     options = {'createdAt': -1}; 

    transactions 
     .find(condition, fields) 
     .exec(function (err, doc){ 
      var retObj = { 
       meta: {"action": "list",'timestamp': new Date()}, 
       doc: doc[0], 
       err: err 
      }; 
      return res.send(retObj); 
     }) 
} 

не работает. Как выбрать оба документа?

Спасибо!

ответ

1

Все, что вам нужно:

var condition = {'relations._id': '52cd9930a22c865a44000006'}; 

MongoDB будет интерпретировать это интуитивно для массива объектов. Вам не нужен оператор $in. Mongodb знает, когда он находит документ, где .relations является массивом, чтобы просмотреть массив для поддокумента с соответствующим ._id.

+0

Я хочу выбрать все документы с идентификатором отношений: '52cd9930a22c865a44000006' – Pmpha

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