MongoDB,使用字段作为subArray的值

时间:2016-02-16 17:23:54

标签: mongodb meteor

我有这样的结构

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

1 个答案:

答案 0 :(得分:3)

您无法让数据库自动为子文档分配ID,但您可以在应用程序中手动执行此操作。本机MongoDB驱动程序公开函数new ObjectId(),它使用与数据库使用的算法相同的算法生成ObjectId。您需要做的就是将其分配给您插入的子文档的字段。

$addToSet: { 'comments': { _id: new ObjectId(), cText:text, ....}}

顺便说一下:要更新文档并同时从数据库中请求文档,请使用collection.findAndModify