MongoDB 数组操作

查询场景

查询单值数组

查询数组中必须包含某个值

假设在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:

  1. 对于指定的文档中,push对应的field不存在时,MongoDB会为该文档新增此字段并执行插入操作;
  2. 如果指定的filed字段本身不是array类型,更新操作将会执行失败;
  3. 如果插入的value本身是一个数组,单纯使用$push操作,会将整个数组作为一个元素插入进filed中;如果希望将value中每个元素单独插入到filed中,需要使用$each配合完成操作;
  4. 指定field中下标地址进行插入,可以使用$postions配合完成;

$addToSet

向数组插入一个值,可以将数组字段当做集合来操作,避免数组中的元素重复;

$pull

https://docs.mongodb.com/manual/reference/operator/update/pull/

删除数组字段中的指定元素,配合$in使用,可以达到批量删除的效果,$pull可以作用到多个数组字段;

... 未完待续

posted @ 2020-12-08 10:24  azi-v  阅读(284)  评论(0编辑  收藏  举报