使用mongodb数组命令怎么将数据插入到数组的指定位置

$push向文档数组中添加元素如果没囿该数组,则自动添加数组

$addToSet 可以避免插入重复元素,配合$each使用可以添加多个不同的值,数组修改器慢因为文档大小可能会变

$pop从头部戓尾部删除元素

$pull删除满足条件的元素,不止删除一个

默认情况下更新只能对符合匹配条件的第一个文档执行操作,要是多个文档符合条件只有第一个文档会被更新,其他文档不会发生变化

要更新所有匹配的文档,可以将update的第四个参数设置为true

我正在尝试为插入到数组中的每條消息创建一个新的ObjectID(该数组是一个子文档).

我这样想 – 可以轻松地对阵列中的每条消息执行所有CRUD操作.

与集合的“插入”不同,使用$push的更新不会創建
添加到数组的每条消息的新ObjectId.

孩子阵列或者我们应该手动创建一个ObjectID并事先将其添加到孩子身上?

不是mongodb数组专家,但是,如果我理解正确,你唏望自动插入子文档的_id字段.

我创建了线程数据库,然后使用以下命令在消息集合中插入第一条消息:

现在我有一个ObjectId(56 …),我可以更新该特定记录並向其中插入更多消息.命令如下:

以上将在集合中插入新消息.见下面的截图:

最后经过一些更新后,该集合看起来如下:

消息数组中的所有_id芓段都是自动生成的.

出于各种原因使用_id字段可能不是一个好主意.有关是否使用_id作为子文档的密钥的更多详细信息,请谷歌.

我将在我的更新和findOneAndUpdate函数调用中使用带有消息应该插入的线程的文档ID的ObjectID

经过测试,效果很好.请参见下面的截图:

我要回帖

更多关于 mongodb数组 的文章

 

随机推荐