3

我在一个 MongoDb 表中有数据,需要将其复制到另一个 MongoDb 表中。第一个表有一个包含不同元素的字段(参见下面的示例),我知道如何使用它。但是,第二个表有一个字段,其中包含一个本身由不同元素组成的数组。如何引用数组中的值?

我试过 field.array[0].element 和 field.array.0.element,但这些都不起作用。

如果今天有人可以解释如何做到这一点,我将不胜感激。客户希望在一天结束前完成这项工作。我被困住了,准备好复制和粘贴数据。谢谢!

这是表 1。注意“won”是空的;我正在尝试填充它:

{ 
    "_id" : ObjectId("5733835a836265135854b7dd"),
    "won" : {
    }
}
{ 
    "_id" : ObjectId("5733835a836265135854b7de"), 
    "won" : {
    }
}
{ 
    "_id" : ObjectId("5733835a836265135854b7df"), 
    "won" : {
    }
}

这是表2。我正在尝试获取元素 userId 和 screenName 的值:

{ 
    "_id" : ObjectId("5733835a836265135854b7dd"),
    "auction": ObjectId("5733833a49841cdd4eb0eef5",
    "lead" : {
        "bid" : NumberInt(481), 
        "bidders" : [
            {
                "userId" : ObjectId("5514d167ac52b1df65e03b4d"), 
                "screenName" : "mdoed", 
            }
        ]
    }
}
{ 
    "_id" : ObjectId("5733835a836265135854b7de"), 
    "auction": ObjectId("5733833a49841cdd4eb0eef5",
    "lead" : {
        "bid" : NumberInt(481), 
        "bidders" : [
            {
                "userId" : ObjectId("5514d167ac52b1df65e03b4e"), 
                "screenName" : "mdoed", 
            }
        ]
    }
}
{ 
    "_id" : ObjectId("5733835a836265135854b7df"), 
    "auction": ObjectId("5733833a49841cdd4eb0eef5",
    "lead" : {
        "bid" : NumberInt(481), 
        "bidders" : [
            {
                "userId" : ObjectId("5514d167ac52b1df65e03b4f"), 
                 "screenName" : "mdoed", 
            }
        ]
    }
}

这是 table1 更新后的样子:

{ 
    "_id" : ObjectId("5733835a836265135854b7dd"), 
    "won" : {
        "bid" : NumberInt(481), 
        "userId" : ObjectId("5514d167ac52b1df65e03b4d"), 
        "screenName" : "mdoed"
    }
}
{ 
    "_id" : ObjectId("5733835a836265135854b7de"), 
    "won" : {
        "bid" : NumberInt(481), 
        "userId" : ObjectId("5514d167ac52b1df65e03b4e"), 
        "screenName" : "mdoed", 
    }
}
{ 
    "_id" : ObjectId("5733835a836265135854b7df"), 
    "won" : {
        "bid" : NumberInt(481), 
        "userId" : ObjectId("5514d167ac52b1df65e03b4f"), 
        "screenName" : "mdoed", 
    }
}

这是我尝试过的查询:

var newActiveProperties = db.table2.find({"auction": ObjectId("5733833a49841cdd4eb0eef5")}).toArray();

newActiveProperties.forEach(function(doc) {
    db.table1.update(
        { "_id": doc._id, },
        { "$set": { "won.bid": doc.lead.bid, "won.userId": doc.lead.bidders[0].userId, "won.screenName": doc.lead.bidders[0].screenName
            }
        },
        { multi: true }
    );
});

我怀疑语法 doc.lead.bidders[0].userId 是错误的,但我不确定正确的语法是什么。

4

0 回答 0