我正在尝试将文档插入特定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');
});
});
答案 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 默认创建)它应该插入到特定的照片中 -
据我所知,您有一张照片集,其中每张照片都是唯一的ID。
当用户向特定照片提交评论时,必须在该照片中插入评论
这是一个典型的更新操作,因为您将更新照片文档,并在数组中插入注释。
{
_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"
}
}
}
)
所有评论都插入到同一张照片文档中。
注意:如果您认为数字评论会随着时间的推移而增长很多, 那么最好引用注释而不是嵌入。
希望它对你有用!