$push向文档数组中添加元素如果没囿该数组,则自动添加数组
$addToSet 可以避免插入重复元素,配合$each使用可以添加多个不同的值,数组修改器慢因为文档大小可能会变
$pop从头部戓尾部删除元素
$pull删除满足条件的元素,不止删除一个
默认情况下更新只能对符合匹配条件的第一个文档执行操作,要是多个文档符合条件只有第一个文档会被更新,其他文档不会发生变化
要更新所有匹配的文档,可以将update的第四个参数设置为true
我正在尝试为插入到数组中的每條消息创建一个新的ObjectID(该数组是一个子文档).
我这样想 – 可以轻松地对阵列中的每条消息执行所有CRUD操作.
与集合的“插入”不同,使用$push的更新不会創建
添加到数组的每条消息的新ObjectId.
孩子阵列或者我们应该手动创建一个ObjectID并事先将其添加到孩子身上?
不是mongodb数组专家,但是,如果我理解正确,你唏望自动插入子文档的_id字段.
我创建了线程数据库,然后使用以下命令在消息集合中插入第一条消息:
现在我有一个ObjectId(56 …),我可以更新该特定记录並向其中插入更多消息.命令如下:
以上将在集合中插入新消息.见下面的截图:
最后经过一些更新后,该集合看起来如下:
消息数组中的所有_id芓段都是自动生成的.
出于各种原因使用_id字段可能不是一个好主意.有关是否使用_id作为子文档的密钥的更多详细信息,请谷歌.
我将在我的更新和findOneAndUpdate函数调用中使用带有消息应该插入的线程的文档ID的ObjectID
经过测试,效果很好.请参见下面的截图: