0
心中已經嘗試執行以下查詢:db.find VS db.aggregation選擇嵌套數組對象
db.getCollection('fxh').find({"username": "user1", "pf.acc.accnbr" : 915177},{userid: true, "pf.pfid": true, "pf.acc.accid":true})
和我的收藏如下:
{
"_id" : ObjectId("5932fd8f381d4c0a7de21942"),
"userid" : 1496513894,
"username" : "user1",
"email" : "[email protected]",
"fullname" : "User 1",
"pf" : {
"acc" : [
{
"cyc" : [
{
"det" : {
"status" : "New",
"dcycid" : 1496513941
},
"status" : "New",
"name" : "QPT202017_M1",
"cycid" : 1496513940
}
],
"status" : "New",
"accnbr" : 915177,
"accid" : 1496513939
},
{
"cyc" : [
{
"det" : {
"status" : "New",
"dcycid" : 1496552643
},
"status" : "New",
"name" : "QPT202017_S8",
"cycid" : 1496552642
}
],
"status" : "New",
"accnbr" : 73497,
"accid" : 1496552641
}
],
"pfid" : 1496513935,
},
"lastupdate" : ISODate("2017-06-03T18:18:55.080Z"),
"__v" : 0
}
當我執行查詢結果如下:
{
"_id" : ObjectId("5932fd8f381d4c0a7de21942"),
"userid" : 1496513894,
"portfolio" : {
"acc" : [
{
"accid" : 1496513939
},
{
"accid" : 1496552641
}
],
"pfid" : 1496513935
}
}
而我的問題是,我只需要看到有關accid和結果返回th呃所有的問題!
任何想法如何才能返回accnbr選定的accid?
注:我也想在我的查詢的末尾添加$符號,它 選擇正確的ACC但它返回的所有對象或者我只需要 只有一個返回的對象。
在17年6月5日
我也用來代替找到aggregate命令,並獲得通過如下結果:
db.getCollection('fxh').aggregate([ { $unwind : "$pf.acc"} , { $match : {"username":"adh1", "pf.acc.accbr": 915177 } }, {$project : {_id:0, accid: "$pf.acc.accid"}}])
,但不能得到一個較低的水平結果,當我跑這個:
db.getCollection('fxh').aggregate([ { $unwind : "$pf.acc.cyc"} , { $match : {"username":"adh1", "pf.acc.accbr": 915177, "pf.acc.cyc.name": "QPT202017_M1" } }, {$project : {_id:0, cycid: "$pf.acc.cyc.cycid"}}])
任何想法?
嘗試'db.getCollection( 'FXH')骨料([{$比賽:{ 「用戶名」: 「ADH1」}},{$開卷: 「$ pf.acc」},{$匹配:{「pf.acc.accbr」:915177}},{$ unwind:「$ pf.acc.cyc」},{$ match:{「pf.acc.cyc.name」:「QPT202017_M1」}},{ $ project:{_id:0,accid:「$ pf.acc.accid」,cycid:「$ pf.acc.cyc.cycid」}}]]' – Veeram
好像它似乎工作,謝謝,可以請給一個對此有點解釋? –