我有这样的结构
{_id : "id Assigned by Mongo" ,
mainPost: "some text",
comments: [],
commentsCount : 0}
我正在添加
的新评论 update({_id: documentID}, { $addToSet: { 'comments': {cText:text , ....}}});
但是评论文档没有ID。无论如何,mongo为该子文档分配了一个ID?
在我增加它之前,我也可以使用commentsCount作为subDocument的ID,但我不知道如何在MongoDB中获取它的值
update({_id: documentID}, { $addToSet: {
'comments': {commentID: ??? how to get commentsCount value??? , cText:text }}})
答案 0 :(得分:3)
您无法让数据库自动为子文档分配ID,但您可以在应用程序中手动执行此操作。本机MongoDB驱动程序公开函数new ObjectId()
,它使用与数据库使用的算法相同的算法生成ObjectId。您需要做的就是将其分配给您插入的子文档的字段。
$addToSet: { 'comments': { _id: new ObjectId(), cText:text, ....}}
顺便说一下:要更新文档并同时从数据库中请求文档,请使用collection.findAndModify
。