Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays mongo db中如何将数组值与键名合并_Arrays_Mongodb_Mongodb Query - Fatal编程技术网

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
    foo
    设置为k(键)和
    bar
    设置为v(值),并转换为对象格式
  • $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 } }
])