将文档插入MongoDB中的特定ID

时间:2014-05-11 13:56:09

标签: mongodb

我正在尝试将文档插入特定ID(由mongoDB生成的ID默认值),就像我们在mysql中一样(INSERT WHERE id =“985264”)。

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');     
  });
}); 

2 个答案:

答案 0 :(得分:7)

您所要做的就是在您要插入的文档中指定_id属性:

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

正如the documentation中所提到的,您应该注意执行一些注意事项 - 即,您需要确保您指定的_id是唯一的。


取自链接的文档页面:

  

如果文档没有指定_id字段,那么MongoDB将添加   _id字段并为之前的文档分配唯一的ObjectId   插入。大多数驱动程序创建一个ObjectId并插入_id字段,   但是mongod会创建并填充_id,如果驱动程序或   申请没有。

     

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

答案 1 :(得分:4)

根据你的评论:

  

我正在尝试在用户提交他/她时创建评论系统   评论具有唯一ID的特定照片(mongoDB   默认创建)它应该插入到特定的照片中 -

  1. 据我所知,您有一张照片集,其中每张照片都是唯一的ID。

  2. 当用户向特定照片提交评论时,必须在该照片中插入评论

  3. 这是一个典型的更新操作,因为您将更新照片文档,并在数组中插入注释。

    {
       _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"
                   }
              }
        }
    )
    

    所有评论都插入到同一张照片文档中。

      

    注意:如果您认为数字评论会随着时间的推移而增长很多,   那么最好引用注释而不是嵌入。

    希望它对你有用!