查询场景
查询单值数组
查询数组中必须包含某个值
假设在orders集合中,文档包含tags数组字段,现在需要查询tags数组字段中包含red元素的所有文档,那么搜索条件可以写为:
{"tags":"red"}
查询内嵌文档数组
查询对象数组中包含某个对象字段必须等于某个值
假设在lessons集合中,文档包含一个booked_people对象数组字段,对象包含user_id、is_noticed两个字段,现在需要查询booked_people数组中元素对象上user_id为1的所有文档;
{"booked_people.user_id":1}
修改
$push
向数组尾部增加指定的值
{ $push: { <field1>: <value1>, ... } }
如果数组中是内嵌文档元素,需要使用.
号操作;
Notice:
- 对于指定的文档中,push对应的field不存在时,MongoDB会为该文档新增此字段并执行插入操作;
- 如果指定的filed字段本身不是array类型,更新操作将会执行失败;
- 如果插入的value本身是一个数组,单纯使用$push操作,会将整个数组作为一个元素插入进filed中;如果希望将value中每个元素单独插入到filed中,需要使用$each配合完成操作;
- 指定field中下标地址进行插入,可以使用
$postions
配合完成;
$addToSet
向数组插入一个值,可以将数组字段当做集合来操作,避免数组中的元素重复;
$pull
https://docs.mongodb.com/manual/reference/operator/update/pull/
删除数组字段中的指定元素,配合$in使用,可以达到批量删除的效果,$pull可以作用到多个数组字段;
... 未完待续