zoukankan      html  css  js  c++  java
  • 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可以作用到多个数组字段;

    ... 未完待续

  • 相关阅读:
    周学习笔记(04)——大三下
    进度(3)
    进度(2)
    进度(1)
    周学习笔记(03)——大三下
    《信息领域热词分析》之在代码层实现可用性战术
    周学习笔记(02)——大三下
    cf1041E
    cf1067b
    cf1131D
  • 原文地址:https://www.cnblogs.com/azi-v/p/MongoDB-Array.html
Copyright © 2011-2022 走看看