明确与多个领域和在哪里条件在mongodb
我想写一个查询相当于distinct
和在mongodb
。 SQL查询是select DISTINCT key,score from GPC where note="test2" and notetwo = "meet2"
{ "_id" : ObjectId("4dc86fef6a0aa8513ab5f21c"), "key" : "SAGAR","score" : 16, "note" : "test1", "notetwo" : "meet1" } { "_id" : ObjectId("4dc86ffd6a0aa8513ab5f21d"), "key" : "SAGAR456", "score" : 17, "note" : "testjh1", "notetwo" : "meetjh1" } { "_id" : ObjectId("4dc8700b6a0aa8513ab5f21e"), "key" : "SAGAR33", "score" : 37, "note" : "test2", "notetwo" : "meet2" } { "_id" : ObjectId("4dc871686a0aa8513ab5f21f"), "key" : "SAGAR33", "score" : 37, "note" : "test2", "notetwo" : "meet2" } { "_id" : ObjectId("4dc871696a0aa8513ab5f220"), "key" : "SAGAR33", "score" : 37, "note" : "test2", "notetwo" : "meet2" } { "_id" : ObjectId("4dc8716c6a0aa8513ab5f221"), "key" : "SAGAR456", "score" : 17, "note" : "testjh1", "notetwo" : "meetjh1" }
查询的预期结果是
[{“key”:“SAGAR33”,“score”:37}]
什么是在mongodb
的等效查询。 我正在使用mongoose执行查询。
您将需要使用aggregate
查询来实现这一点。 下面是一个可以在shell中工作的例子(可以很容易的将它翻译成Mongoose):
db.gpc.aggregate([ // your where clause: note="test2" and notetwo = "meet2" {"$match" : {note:"test2", notetwo:"meet2"}}, // group by key, score to get distinct {"$group" : {_id : {key:"$key", score:"$score"}}}, // Clean up the output {"$project" : {_id:0, key:"$_id.key", score:"$_id.score"}} ])
输出:
{ "result" : [ { "key" : "SAGAR33", "score" : 37 } ], "ok" : 1 }