如何获取MongoDB中的特定字段只有没有键的值?
我的数据集如下:
{ "_id" : "EVNQUERY-k9Uoo74Q3WcdmU", "event_data" : "{\"data\":\"helo\"}", "event_name" : "onOemPushAlert", "timestamp_start" : 1452678481433, "timestamp_end" : 1452678481433, "sender" : "USR-ADMIN", "status" : "pending", "query" : { "user" : { "and" : [ { "email" : { "eq" : "" } } ] } }, "updated_on" : ISODate("2016-01-13T09:48:01.459Z"), "created_on" : ISODate("2016-01-13T09:48:01.459Z") } { "_id" : "EVNQUERY-yAKmrbzs2JeaUY", "event_data" : "{\"data\":\"ji\"}", "event_name" : "onOemPushAlert", "timestamp_start" : 1452681060159, "timestamp_end" : 1452681060159, "sender" : "USR-ADMIN", "status" : "pending", "query" : { "user" : { "@@@and@@@" : [ { "email" : { "eq" : "" } } ] } }, "updated_on" : ISODate("2016-01-13T10:31:00.223Z"), "created_on" : ISODate("2016-01-13T10:31:00.223Z") } { "_id" : "EVNQUERY-0NeCstt2eJchDZ", "event_data" : "{\"data\":\"hyg\"}", "event_name" : "onOemPushAlert", "timestamp_start" : 1452681073882, "timestamp_end" : 1452681073882, "sender" : "USR-ADMIN", "status" : "pending", "query" : { "user" : { "@@@and@@@" : [ { "email" : { "eq" : "" } } ] } }, "updated_on" : ISODate("2016-01-13T10:31:13.897Z"), "created_on" : ISODate("2016-01-13T10:31:13.897Z") }
我正在运行下面的查询
db.eventqueries.find({},{_id:1})
但它给我
{ "_id" : "EVNQUERY-k9Uoo74Q3WcdmU" } { "_id" : "EVNQUERY-yAKmrbzs2JeaUY" } { "_id" : "EVNQUERY-0NeCstt2eJchDZ" }
但我想要的是
["EVNQUERY-k9Uoo74Q3WcdmU", "EVNQUERY-yAKmrbzs2JeaUY", "EVNQUERY-0NeCstt2eJchDZ"]
对集合上的_id
字段执行distinct()
查询:
db.eventqueries.distinct("_id")
在node.js驱动程序中,运行distinct()
命令,该命令将使用结果进行callback:
collection.distinct("_id", function(err, docs) { if (err) { /* handle error */ }; console.log(docs); });
你可以使用聚合来实现你想要的。 你可以试试这个
db.eventqueries.aggregate([ { $group : { keys : { $push : "_id" } } } ])