2017-11-22 8 views
0

私は2つのコレクションを持っているが、私は、ユーザーIDどうすればmongodbに集約できますか? "juir"、 "mobinumber":

points collection   
{ 
    "userpoint": "2", 
    "purchaseid":"dj04944", 
    "store":"001", 
    "date":ISODate("2017-11-10T08:15:39.736Z") 
    "userid"[ 
    objectID("5a7565ug8945rt67"), 
    objectID("8a35553d3446rt78") 
    ] 
}, 
{ 
    "userpoint": "4", 
    "purchaseid":"5678sd", 
    "store":"004", 
    "date":ISODate("2017-11-11T08:15:39.736Z") 
    "userid"[ 
    objectID("9a85653d3890rt09") 
    ] 
} 

users collection 

{ 
    objectID("5a7565ug8945rt67"), 
    "name":"asdf", 
    "mobinumber":"12345", 

}, 
{ 
    objectID("8a35553d3446rt78"), 
    "name":"qwr", 
    "mobinumber":"11111", 

}, 

{ オブジェクトID( "9a85653d3890rt09")、 "名前" に基づいて集計をしたい、ここで収集し、ユーザーのコレクションを指します。私が行うことができますどのように "9611"、

} 

を集約

db.points.aggregate([ 
    { 
     $lookup: 
     { 
      from: "users", 
      localField: "", 
      foreignField: "", 
      as: "inventory_docs" 
     } 
    } 
]) 

私は前方

+0

あなたはあなたが何をしたいのかを説明する必要があり、このクエリを試すことができます言葉で。あなたは何が必要なのですか?集計のユーザーコレクションからいくつかのフィールドが必要ですか? –

+0

私は2つのコレクションのええを組み合わせる必要があります。私はユーザーコレクション@AsyaKamsky –

+0

からすべてのフィールドが必要ですので、localField "userid"とforeignField "_id"を使用してください –

答えて

1

を移動するために私を助け 両方のコレクションを結合する場合のように、あなたの期待出力怒鳴る

{ 
    "_id" : ObjectId("5a164fa5400096bfa0b3422c"), 
    "date" : ISODate("2017-11-10T08:15:39.736Z"), 
    "name" : "asdf", 
    "mobile" : "12345" 
} 

ザ・

db.points.aggregate([ 
{ 
    $match: { 
     store: "001", 
     date: {$lte: ISODate("2017-11-10T08:15:39.736Z"), $gte: ISODate("2017-11-10T08:15:39.736Z")} 
    } 
    }, 
    {$unwind: "$userid"}, 
    { 
    $lookup: { 
     from: "users", 
     localField: "userid", 
     foreignField: "_id", 
     as: "user" 
    } 
    }, 
    { 
    $project: { 
     userpoint: 1, 
     purchaseid: 1, 
     date: 1, 
     user: {$arrayElemAt: ["$user", 0]} 
    } 
    }, 
    {$match: {"user.name": "asdf"}}, 
    { 
    $project: { 
     date: 1, 
     name: "$user.name", 
     mobile: "$user.mobinumber" 
    } 
    } 
]) 
+0

"store": "001"、ISODate( "2017-11-10T08:15:39.736Z")と "name": "asdf" –

+0

あなたの 'store:001'には2人のユーザーがいます'asdf'という名前だけを取得したいですか?あなたの実際の状態はあなたの質問であなたの基準、あなたが望むものなどを明確に記述する必要があります.... @itsme –

+0

store:001は2人のユーザー(複数のユーザーかもしれません)ですが、ユーザー(名前で検索) –

関連する問題