【问题标题】:copyValue from another collection in MongoDb来自 MongoDb 中另一个集合的 copyValue
【发布时间】:2014-04-08 21:14:05
【问题描述】:

我可以将某些字段从集合复制到另一个集合吗?

我想将 bar 的值复制到 foo 集合,但我不想输入类型,我想在 foo 中插入新的 _id e 额外字段(userId)(然后我使用 Node.js)

collection bar
{
    "_id" : ObjectId("77777777ffffff9999999999"),
    "type" : 0,
    "name" : "Default",
    "index" : 1,
    "layout" : "1",    
}


collection foo
{
    "_id" : NEW OBJECT ID,
//    "type" : 0, NO IN THIS COLLECTION
    "userId" : ObjectId("77777777ffffff9999999911"),
    "name" : "Default",
    "index" : 1,
    "layout" : "1",    
}

我尝试使用 db.bar.copyTo("foo");,但复制整个集合

【问题讨论】:

    标签: javascript mongodb


    【解决方案1】:

    实际上,这可能是您最好的选择。但是,如果您不想在集合中添加新字段,则只需使用 $unset 将其删除:

    db.foo.update({ },{ "$unset": { "type": 1 } },false,true)
    

    这将在一个语句中从新集合中的所有文档中删除该字段。

    在 2.6 及更高版本的未来版本中,您还可以使用 aggregate 执行此操作:

    db.bar.aggregate([
        { "$project": {
            "userId" : 1
            "name" : 1
            "index" : 1
            "layout" : 1
        }},
        { "$out": "foo" }
    ])
    

    新的$out 方法将聚合语句的输出发送到集合。

    【讨论】:

      【解决方案2】:

      您可以使用以下方法将字段从一个集合复制到另一个集合

       db.copyFromCollection.find().forEach(function(x){
      
          db.copyToCOllection.update(
          {"_id" : ObjectId("53205a4a14952bee39f3376e")}, //some condition for update
      
          { $set:{parameterOfCopyToCollection:x.parameterOfCopyFromCollection}
      });
      
      });
      

      在这里,我们使用上述函数遍历数据。我们遍历要从中复制数据的集合,然后在函数内部更新要添加/更新该数据的文档。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-12
        • 2016-08-19
        • 2022-01-09
        • 1970-01-01
        • 1970-01-01
        • 2017-10-17
        • 2017-09-26
        • 2013-06-17
        相关资源
        最近更新 更多