2016-09-26 20 views
2

Find()コマンドで文書全体を見つけようとしていて、条件付きのネストされた配列をフィルタリングしようとしています。Mongoose:ネストされた配列を見つけてフィルターに掛ける

ここで使用スキーマの作品:

var ListSH = new Schema({ 
    name: { type: String, unique: true, required: true}, 
    subject : String, 
    recipients : [ 
    Schema({ 
    uid : { type : ObjectId, required : true, ref:'User', unique: true}, 
    status : { type : Number, default : 1 } 
    },{_id: false}) 
    ] 
}; 

現在、私はListModel.findOne({ _id : req.params.id_list, function(err,list){...};

を行うと、ポストマンは私のことを与える:

{ 
    "_id": "57e6bcab6b383120f0395aed", 
    "name": "Emailing listname", 
    "subject": "List subject", 
    "recipients": [ 
    { 
     "uid": "57e932bcbbf0e9e543def600", 
     "status": 0 
    }, 
    { 
     "uid": "57e93266c3c0b1dc1625986f", 
     "status": 1 
    } 
    ] 
} 

を私はポストマンは私のような何かを返したいのですがそれは、recipients.status : 1の条件を追加することである。

{ 
     "_id": "57e6bcab6b383120f0395aed", 
     "name": "Emailing listname", 
     "subject": "List subject", 
     "recipients": [ 
     { 
      "uid": "57e93266c3c0b1dc1625986f", 
      "status": 1 
     } 
     ] 
    } 

私はすでに..

誰もが知っているListModel.findOne({ _id : req.params.id_list, 'recipients.status' : 1}, function(err,list){...};

populate([$match('recipients.status : 1)]); のような奇妙なしかし、誰成功で何かをしようとしましたか?クエリ以下

答えて

1

あなたはこの

ListModel.aggregate(
    { $match: {_id: ObjectId("57e6bcab6b383120f0395aed")}}, 
    { $unwind: '$recipients'}, 
    { $match: {'recipients.status':1}}) 

出力

{ 
    "_id" : ObjectId("57e6bcab6b383120f0395aed"), 
    "name" : "Emailing listname", 
    "subject" : "List subject", 
    "recipients" : { 
     "uid" : "57e93266c3c0b1dc1625986f", 
     "status" : 1 
    } 
} 

したい簡単な方法でそれを得るためにaggregateを使用することができます詳細は集計を理解してください。 s here

+0

これは、基準に何人か答えても、1人の$受取人だけを返します。 – Vaiden

0

てみてください^^ ありがとう:

ListModel.findOne({"_id" : "57e6bcab6b383120f0395aed", 'recipients.status' : 1},{_id:1, name: 1, subject:1,'recipients.$': 1}, function(err,list){...}); 
+0

両方のソリューションが私のために働いた! お世話になりましたお返事ありがとうございます –

+0

@ nicolas.grd嬉しいです! – Sachin

関連する問題