2014-05-11 33 views
0

我想插入文档到一个特定的ID(由mongoDB生成的默认ID),就像我们在mysql(INSERT WHERE id =“985264”)中所做的那样。在MongoDB中插入文档到特定的ID

app.get('/', function(req , res){ 
db.facebook.insert({ 
_id:985264, 
username: "Solomon.david", 
status : "i love to code and eat", 
comments: [ 
{ 
    user : "jackson", 
    comment: "even me " 
} 
] 
    }, function(err,docs){ 
res.render('won.html');  
    }); 
}); 
+0

我从来没有见过'INSERT WHERE'之前,除非你正在描述一个INSERT INTO ... SELECT'。你是什​​么意思“到一个特定的ID”。当你做你正在尝试的事情时会出现什么问题?你做了什么来试图解决它? – Brandon

+0

我想创建一个评论系统,当用户提交他/她的评论到一个特定的照片与一个唯一的ID(mongoDB默认创建)它应该插入到该特定的照片 –

+0

@Solomondavid我已经满足您的要求在我的答案中添加对特定照片的评论。如果你仍然在寻找它,你可以参考它。 – mohamedrias

回答

2

按您的评论:

我试图在用户提交他/她的 评论与唯一ID的特定照片(其中MongoDB的 默认创建创建注释系统)应该插入到特定的照片 -

  1. 我知道你有一个照片集,其中每张照片作为一个独特的我D.

  2. 当用户提交评论到一个特定的照片是注释必须在该照片

这是一个典型的更新操作,因为你会被更新与评论的照片文件被插入插入阵列。

{ 
    _id : ObjectId("536f710fc55b2acc61000bc9"), 
    foo: "foo", 
    bar : "bar", 
    comments: [ 
    { 
     user : "userId", 
     comment: "The photo is nice" 
    } 
    ] 
} 

所以您的查询将是:

db.photocollection.update(
    {_id: ObjectId("536f710fc55b2acc61000bc9")}, 
    {$push : { 
      comments : { 
       user: "userid", 
       comment: "photo is awesome" 
       } 
      } 
    } 
) 

所有的评论都插在同一张照片文件内。

注意:如果您觉得数字注释会随着时间的推移而增长很多,则 则更好地引用评论而不是嵌入。

希望它对你有用!

+0

我正在寻找这个答案 –

+0

,但我认为这会更新现有的评论,我猜? –

+0

不会..这会在照片文章中添加新评论 – mohamedrias

4

所有你需要做的就是指定文档中_id属性您试图插入:如the documentation提到

db.collection.insert({ "_id": "unique_id", "foo": "bar", ... }) 

,有几个方面的考虑,你应该小心执行 - 即,您需要确保您指定的_id是唯一的。


从链接的文档页面摘自:

如果文件没有指定_id字段,然后MongoDB的将增加 的_id场和前 插入指定的文档的唯一的ObjectId。大多数驱动程序创建ObjectId并插入_id字段 ,但是如果驱动程序或应用程序没有,则mongod将创建并填充_id。

如果文档包含_id字段,则_id值在集合内必须是唯一的 以避免重复键错误。

+0

它显示了错误报告中的重复ID可以ü发表我的评论系统的示例代码 –

+0

嗯......正如我在回答中提到**两次**,您必须确保您尝试插入的_id是独特。没有示例代码可以在这里提供 - 就像它在我发布的代码和文档中显示的那样。 – Lix

+0

现在感谢您的工作 –