mongodb:如何为每个数组元素创建_id?

Posted

技术标签:

【中文标题】mongodb:如何为每个数组元素创建_id?【英文标题】:mongodb: How to create _id for each array element? 【发布时间】:2016-05-06 00:09:54 【问题描述】:

有没有一种方法,每当我在 monodb 数组中 $push 一个新元素时,都会向其中添加一个普通的 _id?我记得 mongoose 会自动执行类似的操作,但现在我使用的是 mongodb 的原生 js,它似乎没有插入任何 _id。

例子:

chats.updateOne(_id: chat_id,
            $push: messages: 
                    
                        message: data.message,
                        date: new Date(),
                    ,
            function(err, response)
);

在执行时,messages 数组应该有常规的 _id 字段、message 和 date。目前它只创建消息和日期。

【问题讨论】:

您需要为messages创建架构 【参考方案1】:

你可以使用ObjectId():

chats.updateOne(_id: chat_id,
            $push: messages: 
                    
                        message: data.message,
                        date: new Date(),
                        _id: ObjectId()
                    ,
            function(err, response)
);

【讨论】:

ObjectId() 在 NodeJS 驱动程序中与 mongo Shell 中的函数不同。替代方法是 ObjectID.createFromTime(time)。只是为了帮助未来的游客。文档:mongodb.github.io/node-mongodb-native/api-bson-generated/…

以上是关于mongodb:如何为每个数组元素创建_id?的主要内容,如果未能解决你的问题,请参考以下文章

如何为嵌套在数组中的文档中的字段设置唯一约束?

如何为主数组列表的元素创建“子数组列表”?

如何为 MongoDB 中的嵌入式文档创建唯一 ID?

PySpark:如何为数组列中的每个元素添加值?

如何为以下描述编写 mongodb 聚合查询

如何为子文档创建 mongoDb 架构