Arrays mongo db中如何将数组值与键名合并
预期输出Arrays mongo db中如何将数组值与键名合并,arrays,mongodb,mongodb-query,Arrays,Mongodb,Mongodb Query,预期输出abc成为键bar { _id :{ "foo" : "abc" }, "time" :[], "bar": [ [], [] ] } 你可以试试 $ArrayTobjects将foo设置为k(键)和bar设置为v(值),并转换为对象格式 $mergeObjects合并$$ROOT及以上操作结果 $replaceRoo
abc
成为键bar
{
_id :{
"foo" : "abc"
},
"time" :[],
"bar": [
[],
[]
]
}
你可以试试
将$ArrayTobjects
设置为k(键)和foo
设置为v(值),并转换为对象格式bar
合并$mergeObjects
及以上操作结果$$ROOT
若要替换以上两个合并对象,将导致根$replaceRoot
删除$project
字段,因为我们不需要栏
检查操作员。在我的情况下,它不起作用,我有多个文档,或者您可以详细描述我或发布一些查询,这将很有帮助。您可以提供更好的示例和解释吗?。有了这些数据,我假设您只想将
bar
重命名为abc
。但是,abc
是给定的还是必须从\u id.foo
字段获取?是的,必须从\u id.foo
获取。因此,abc
是动态变化的,但是bar
是键名,它包含abc
的值,Expected result是abc
作为数组名并获取值。是否要更新update()
此文档?或者只想获取并显示aggregate()
?如果我将文档作为数组,但我没有将文档作为数组,那么您的sol是有效的。我有这样的结构{
{u id:{“foo”:“abc”},“time”:[],“bar”:[],[],[],[]}
如果{code>{u id:{“foo”:“abc”},“time”:[],“bar”:[],[],[]}你的sol是工作的
是的,这是一个数组,它只是游乐场网站的结构,您可以在您的平台上运行此查询。运行此查询时,我收到错误消息:“$arrayToObject需要对象键为“k”和“v”。在服务器上发现不正确的密钥数:1。是否执行了相同的查询?是的,我执行了,与您给出的查询相同。但正如我所说,我有一个文档带有{}
,您的查询正在使用[]
。
{
"_id" :{
"foo" : abc
},
"time" :[],
"abc": [
[],
[]
]
}
db.collection.aggregate([
{
$replaceRoot: {
newRoot: {
$mergeObjects: [
{ $arrayToObject: [[{ k: "$_id.foo", v: "$bar" }]] },
"$$ROOT"
]
}
}
},
{ $project: { bar: 0 } }
])