如何在MongoDB中手动添加引用?

时间:2012-07-22 15:17:52

标签: javascript mongodb reference

我在开发过程中使用node.js web-front-end访问MongoDB文档。

我现在关注文件:

{
   "_id": ObjectID("500abe6a25dff13c7c000001")
    , "username": "kyogron"
    , "email": "kyogron@example.de"
    , "contacts": [ObjectID("500abe6a2543213c7c000002")] // this should contain other user's id
}

我现在想要在前端实现该功能之前手动将另一个user_id添加到contacts数组中。

如上所述,我已经尝试使用ObjectID关键字尝试此操作,但这不起作用...

2 个答案:

答案 0 :(得分:4)

这对MongoDB shell起作用,我使用的是$addToSet而不是$push因为我认为你想避免欺骗:

var o = new ObjectId();
db.foo.update({}, {$addToSet : {"contacts" : o}});
var o = new ObjectId();
db.foo.update({}, {$addToSet : {"contacts" : o}});

这给了我一个看起来像这样的文件(我的foo集合只包含你的样本,所以我没有必要具备特定的匹配标准):

{
    "_id" : ObjectId("500c2118c78bb07bfbb69eb3"),
    "contacts" : [
        ObjectId("500c20efc78bb07bfbb69eb2"),
        ObjectId("500c227ac78bb07bfbb69eb6")
    ],
    "email" : "kyogron@example.de",
    "username" : "kyogron"
}

答案 1 :(得分:1)

在mongo shell中运行以下更新:

db.collection.update({"_id" : ObjectId("500abe6a25dff13c7c000001")},
                     {$push:{"contacts": ObjectId("500abe6a2543213c7c000002")}})

为特定情况使用适当的ObjectId值。