2017-05-05 6 views
0

の内側の配列で、私は次のような構造を持つモンゴDB内の文書があります:私は「CLIENT_ID」でフィルタを作るのが好き

{ 
    "username" : "John Doe", 
    "userdocument" : "1026254745", 
    "user_id" : "6QH70tZrPbTDvqmOtUCcT9", 
    "createAt" : ISODate("2017-03-22T22:01:15.808Z"), 
    "network_clients" : [ 
     { 
      "client_id" : "6XvzpJ2IwnVT66pEkKU7E3", 
      "_id" : ObjectId("58d2f47dc9a288179cecb996"), 
      "usertype" : "client" 
     }, 
     { 
      "client_id" : "07nPfV5TEH1qTLDBK2xIMe", 
      "_id" : ObjectId("58d321aa26417b20f34bc7e7"), 
      "usertype" : "client" 
     }, 
     { 
      "client_id" : "3b45WntXG6KMX12qSEyMGc", 
      "_id" : ObjectId("590baf16ea97a217e4834370"), 
      "usertype" : "supplier" 
     } 
    ], 
    "useravatar" : "https://pos-lisa.s3.amazonaws.com/useravatar-1493859018209.jpg", 
    "comments" : "", 
} 

をして」 「ユーザタイプ」フィールドを含む。これで、ユーザーは私のクライアントの一つのサプライヤーすることができ、かつ同一のユーザが私のクライアントの他のクライアントになることができ、私のアプリでは

User.aggregate({ $match: 
    { $and: 
     [ 
      { 'network_clients.client_id': clientId }, 
      { 'network_clients.usertype': userType } 
     ] 
    } 
}).sort({ username: 'ascending' }) 

:私はマングースにMongoDBの中で次のことをしようとしていますmongoはクライアントまたはサプライヤであるかどうかに関わらず常にユーザを送ります。クライアントは「クライアントリスト」と「サプライヤリスト」のユーザを参照します

フィルタを内部配列この文書の?事前にお礼します

+0

可能な複製(http://stackoverflow.com/questions/15117030/how-to-filter-array-in [MongoDBを持つサブ文書の中で、配列をフィルタリングする方法] -subdocument-with-mongodb) – Veeram

答えて

0

私はあなたがしたいことを正確に追いかけているとは確信していません。しかし、おそらくこれはそれに近いものである:の

User.aggregate({$project:{'username':1,'network_clients':1}}, 
{$unwind:'$network_clients'}, 
{$match:{'network_clients.client_id':clientId,'network_clients.usertype':userType}}, 
{$sort:{username:1}}) 
+0

あなたは絶対に正しいです!そして今ここに、ルールはあります:あなたに「ありがとう」はありませんが、私はそれらに100万を送ります! :) – maoooricio

関連する問題