Arrays 如何从mongoose中的数组中查找对象

Arrays 如何从mongoose中的数组中查找对象,arrays,node.js,mongodb,object,mongoose,Arrays,Node.js,Mongodb,Object,Mongoose,我有如下模式:- var P = { s : [{ data : [], sec : mongoose.Schema.Types.ObjectId }] }; 现在我只想找到section的对象,而不是整行。例如,如果我传递sec值,我只需要该sec对象的s.data的值 示例:- { s : [ { data : [], sec : '52b9830cadaa9d273200000d' }

我有如下模式:-

var P = {
     s : [{
         data : [],
         sec : mongoose.Schema.Types.ObjectId
     }]
 };
现在我只想找到section的对象,而不是整行。例如,如果我传递
sec
值,我只需要该
sec
对象的
s.data
的值

示例:-

{ s : [ 
    {
       data : [],
       sec : '52b9830cadaa9d273200000d'
    },{
        data : [],
       sec : '52b9830cadaa9d2732000005'
    }
  ]
}
结果应该是-

 {
    data : [],
    sec : '52b9830cadaa9d2732000005'
 }

我不想要整排人。可能吗?如果是,请帮助我。

您可以使用find()随时获取某个字段的值。例如,在您的案例中:

db.collectionName.find({},{s.data:1})
因此,第一个括号是应用任何条件或查询,第二个括号中必须将字段定义为1(仅获取这些字段的值)

请查看更多信息。
让我知道它是否解决了您的问题。

不是进入Mongo或db,而是使用纯JavaSript技能这里是您提到的解决方案,Node.js将执行以下任务

模式

   var P = { s : [ 
            {
             data : [],
             sec : '52b9830cadaa9d273200000d'
              },{
             data : [],
             sec : '52b9830cadaa9d2732000005'
              }
         ]
    };
搜索方法代码

var search = function (search_sec){
     for (var i=0; i<(P.s.length);i++){

       var pointer = P.s[i].sec;
       var dataRow = P.s[i];

        if((pointer) === search_sec ){

             console.log(dataRow);

          }
      }

};

在此处使用演示-

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

db.test.find({}, {_id: 0, s: {$elemMatch: {sec: '52b9830cadaa9d2732000005'}}})
产出:

{
  "s": [
    {
      "data": [ ],
      "sec": "52b9830cadaa9d2732000005"
    }
  ]
}

谢谢你的回复。你的回答给了我整个阵列。但我只想要数组的特定对象。如果你有任何建议,请回答我。
{
  "s": [
    {
      "data": [ ],
      "sec": "52b9830cadaa9d2732000005"
    }
  ]
}