如何在 MongoDB 中的对象内检索不同的键

Car*_*los 4 arrays mongodb mongodb-query

我在 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 } }
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

use*_*814 7

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

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

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

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

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