我试图从mongodb获取单个数组值,但当我尝试我得到整个对象

时间:2016-11-30 10:06:10

标签: node.js mongodb mongoose

1.我没有获得电子数据中的项目,但整个文档

getItem(data){
    dbswap.findOne(
        { 'swap.Items.Electro.id':data.id, 
         'swap.Items.Electro.id':data.id },  function(err,item){
        if(err){
            return (err);
        }
        if(item){     
             console.log(item);                
        }

    });
} // EOF
  

这是我的架构
  1.我正在尝试获取我在Electro中创建的项目,我不想要我现在正在获得的整个对象。

var swapSchema = new mongoose.Schema({
 swap: {
     name: String,
     Items: {
         Electro: [
             {
                 name: String,
                 info: String,
                 price: Number,
                 dateCreated: Date,
                 category: String,
                 id: Number
              }
          ]
      }
  }
});

1 个答案:

答案 0 :(得分:1)

使用投影字段:

如果你想获得所有数组:

   dbswap.findOne(
    { 'swap.Items.Electro.id':data.id},
    { 'swap.Items.Electro' : 1}
   , function(err, obj){

会返回类似的内容:

{
 _id: ObjectId("sdfsdfsdf"),
 Electro:[{....},{....}]
}

或者,如果您只想要数组中与查询匹配的对象:

   dbswap.findOne(
    { 'swap.Items.Electro.id':data.id},
    { 'swap.Items.Electro.$' : 1}
   , function(err, obj){

会返回类似的内容:

{
 _id: ObjectId("sdfsdfsdf"),
 Electro:{your match object}
}