2016-11-26 3 views
0

Пусть говорят, я иметь следующую структуру:мангуст найти документ по поддокументе в _id

var Partner = require('../partner/partner.model'); 

var ContractSchema = new Schema({ 
     // blahblah 
     partners: [Partner.schema] 
}); 

Так вот каждый контракт имеет множество партнеров, и каждый партнер имеет _id свойство.

Я хочу найти контракт, у которого есть партнер с конкретным _id. Я попытался это, но не получилось:

var ObjectId = require('mongoose').Types.ObjectId;  
    Contract.find({ 
     partners: { 
     $elemMatch: { 
      _id: { 
      $eq: new ObjectId(req.query.partnerId) 
      } 
     } 
     } 
    }, function (err, serviceContracts) { 
     if (err) { 
     return handleError(res, err); 
     } else { 
     return res.status(200).json(serviceContracts); 
     } 
    }); 

EDIT: Вот пример того, что я имею в БД:

{ 
    "_id" : ObjectId("57e370e72beac9fc21c99ca3"), 
    "updatedAt" : ISODate("2016-09-22T05:49:27.000Z"), 
    "createdAt" : ISODate("2016-09-22T05:49:27.000Z"), 
    "currency" : "USD", 
    "partners" : [ 
     { 
      "updatedAt" : ISODate("2016-09-22T05:49:27.000Z"), 
      "createdAt" : ISODate("2016-09-22T05:49:27.000Z"), 
      "name" : "Apple Inc.", 
      "_id" : ObjectId("57e370e72beac9fc21c99caa") 
     } 
    ], 
    "__v" : 0 
} 
+0

прежде всего заменить '' 'Contract.find ({ partner: {' '' с '' 'Contract.find ({ партнеров: {' '' Тогда сообщите –

+0

Заменено, все еще не работает. –

+0

Можете ли вы, пожалуйста, дать мне свою таблицу записей с одним столом. –

ответ

1

Как сказал @robertklep, это работает:

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