【问题标题】:How to retrieve distinct keys inside an object in MongoDB如何在 MongoDB 中检索对象内的不同键
【发布时间】:2017-09-19 09:42:56
【问题描述】:

我在 MongoDB 中有这个:

{ "_id" : ObjectId("58fb35531eb5df245d5d434f"), "name" : "d1.html", "indexation" : { "Citroen" : 1, "color" : 1, "Marca" : 1, "rojo" : 1 } }
{ "_id" : ObjectId("58fb35531eb5df245d5d4350"), "name" : "d2.html", "indexation" : { "blancos" : 1, "ocasión" : 1, "Madrid" : 1, "Coches" : 1, "rojo" : 1, "coches" : 1 } }
{ "_id" : ObjectId("58fb35531eb5df245d5d4351"), "name" : "d3.html", "indexation" : { "rojos" : 1, "Ocasión" : 1, "marcas" : 1, "Madrid" : 1, "blancas" : 1, "autos" : 1, "de" : 1 } }

您可以看到包含上述内容的图像:

我想在每个文档的对象“索引”中获取不同的键。 我想得到的结果是:["Citroen", "color", "Marca", "rojo", "blancos", "ocasión", "Madrid", "Coches", "coches", "rojos", "Ocasión", "marcas", "blancas" "autos", "de"]

我正在尝试不同的(“索引”),但我得到了整个索引...

你能解释一下我必须做什么才能得到我想要的吗?

【问题讨论】:

    标签: arrays mongodb mongodb-query


    【解决方案1】:

    您可以使用3.4.4 版本中的新$objectToArrray 将所有键值对转换为文档数组,然后使用$unwind$group$addToSet 来获得不同的键

    db.collection.aggregate([{$project: {indexation: {$objectToArray: "$indexation"}}}, {$unwind:"$indexation"}, {$group:{_id:null, keys:{$addToSet:"$indexation.k"}}}])
    

    对于较低版本,您必须将indexation 更新为如下所示并使用

    db.collection.distinct("indexation.k")

     { "_id" : ObjectId("58fb35531eb5df245d5d434f"), "name" : "d1.html", "indexation" : [{ "k" : "Citroen", "v" : 1 }, { "k" : "Marca", "v" : 1 }]}
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 2019-11-03
    • 1970-01-01
    • 2016-12-07
    • 2014-10-16
    • 2022-01-06
    • 1970-01-01
    相关资源
    最近更新 更多