首页 > 解决方案 > 如何将文档中的字段和值复制到mongodb中不同集合中的另一个文档

问题描述

我有一个名为X的集合,其中包含一个如下所示的文档:

{
    "uid": "dfdf"
}

我有另一个名为Y的集合,它也包含一个如下所示的文档:

{
    "name": "bfbf"
}

我想从集合Y添加到文档,集合 X中的字段和值,所以它看起来像这样:

   {
       "uid": "dfdf",        
       "name": "bfbf"
   }

我在 Y 集合上运行了下一个代码:

{$set : {"uid" : {"$query": {"$q": {}, "$ns": "**X**", "$p": "uid"}}}}

但是该值是用这样的数组设置的:

   {
       "uid": ["dfdf"],        
       "name": "bfbf"
   }

如何在没有数组的情况下设置原始值?提前致谢

标签: mongodbmongodb-query

解决方案


似乎 OP 只是想进行无条件查找并将该字段分配uid到集合 Y

db.Y.aggregate([
  {
    "$lookup": {
      "from": "X",
      "pipeline": [],
      "as": "x"
    }
  },
  {
    "$unwind": "$x"
  },
  {
    $set: {
      "uid": "$x.uid"
    }
  },
  {
    "$unset": "x"
  }
]).forEach(function(doc){
  db.Y.update({_id: doc._id}, {$set: {uid: doc.uid}});
});

这是Mongo游乐场供您参考。


推荐阅读