2016-09-25 2 views
0

Mongodb、golang。データをメモリにロードせずにスライス/マップを数えることはできますか?私は私のコレクションのラボで

{ 
    "_id" : ObjectId("57e602ada35ea4db6e4eee27"), 
    "areas" : [ 
     "nanotech", 
     "robotics" 
    ] 
} 

私のクエリは次のとおりです。 db.labs.find({"_id" : ObjectId("57e602ada35ea4db6e4eee27")},{areas:1})

私が欲しいものは、誰もが知っている、スライス内の要素を数えるが、全体のスライスを取得しないことですか?私はgolangとの大きな対応があるmgoパッケージを使用しています。おかげで

+0

正確に、よく私はちょうど非常に非効率 – omgj

答えて

1

db.labs.aggregate([ 
 
    {$match: {"_id" : ObjectId("57e602ada35ea4db6e4eee27")}}, 
 
    {$project: { 
 
     areasCount: {"$size": "$areas"} 
 
    } 
 
    } 
 
])

+0

おかげで、通じ範囲およびカウンタをインクリメントするが、これはメモリにスライス全体をロードします。 4または5 'SELECT COUNT(*)FROM ....よりもはるかに優れています。 – omgj

関連する問題