如何在Mongodb结果中将字段值用作键名

Čam*_*amo 5 field key-value mongodb

有人可以告诉我在mongodb结果中是否可以使用字段值作为键。如果我有类似的文件

{'code': 'xxx', 'item': 'yyy'}
{'code': 'ooo', 'item': 'eee'}
Run Code Online (Sandbox Code Playgroud)

我想获得结果,其中代码值将是关键

{'xxx': 'yyy'}, {'ooo': 'eee'}
Run Code Online (Sandbox Code Playgroud)

mic*_*ckl 6

如果要动态构建密钥,则必须使用$ arrayToObject。它以kv字段组成的数组作为参数。要使其成为根,可以使用$ replaceRoot阶段,请尝试:

db.col.aggregate([
    {
        $replaceRoot: {
            newRoot: { $arrayToObject: [ [ { k: "$code", v: "$item" } ] ]}
        }
    }
])
Run Code Online (Sandbox Code Playgroud)

  • 可以通过单阶段https://mongoplayground.net/p/iHvydpjWMtU完成 (2认同)

小智 -4

我认为那不可能。Mongo 将结果的解释留给应用程序。这就是为什么 mongodb 是一个无 shema 的数据库。