如何在mongoose中找到数组中的对象

Kun*_*ndu 3 arrays object mongoose mongodb node.js

我有一个如下的架构: -

var P = {
     s : [{
         data : [],
         sec : mongoose.Schema.Types.ObjectId
     }]
 };
Run Code Online (Sandbox Code Playgroud)

现在我想只查找截面的对象而不是整行.喜欢如果我传递sec值,我只想要s.datasec对象的值.

例如: -

{ s : [ 
    {
       data : [],
       sec : '52b9830cadaa9d273200000d'
    },{
        data : [],
       sec : '52b9830cadaa9d2732000005'
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

结果应该看起来像 -

 {
    data : [],
    sec : '52b9830cadaa9d2732000005'
 }
Run Code Online (Sandbox Code Playgroud)

我不想要所有的整排.可能吗?如果是,那么请帮助我.

Joh*_*yHK 9

您可以使用$elemMatch投影运算符将数组字段限制s为单个匹配元素,但不能使用删除s文档的级别find.

db.test.find({}, {_id: 0, s: {$elemMatch: {sec: '52b9830cadaa9d2732000005'}}})
Run Code Online (Sandbox Code Playgroud)

输出:

{
  "s": [
    {
      "data": [ ],
      "sec": "52b9830cadaa9d2732000005"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)