美文网首页
mongodb使用记录----查询文档

mongodb使用记录----查询文档

作者: 一缕清风一世情_百度 | 来源:发表于2020-04-15 14:26 被阅读0次

    基础语法

    db.collection.find(<query filter>, <projection>)

    说明:
    query filter: 查询条件,指名返回哪些文档;
    projection: 指定返回文档的哪些字段;

    示例

    1.创建user集合并插入数据

    db.user.insertMany(
      [
        {
          name: "name1",
          password: "123456",
          age: 24,
          role: 1,
          status: 1,
          avart: "name1-avart.png",
          badges: [
            "blue",
            "black"
          ],
          points: [
              { points: 85, bonus: 20 },
              { points: 85, bonus: 10 }
          ]
        },
        {
          name: "name2",
          password: "123456",
          age: 28,
          role: 2,
          status: 1,
          avart: "name2-avart.png",
          badges: [
            "red",
            "black"
          ],
          points: [
              { points: 60, bonus: 20 },
              { points: 85, bonus: 10 }
          ]
        }
      ]
    )
    

    2.查询

    2.2 基础查询

    查询返回全部用户数据

    db.user.find({})
    

    查询返回用户name字段为name1的数据

    var filter_data = {
      name: "name1"
    };
    db.user.find(
      filter_data
    )
    

    多条件查询返回用户name字段为name1并且role为1的数据

    var filter_data = {
      name: "name1",
      role: 1
    };
    db.user.find(
      filter_data
    )
    

    2.3 使用查询操作符指定条件

    $in:查询数组中包含指定值

    数组类型数据查询

    var filter_data = {
      badges: {
        $in: ["red"]
      }
    };
    或者
    var filter_data = {
      badges: {
        $in: "red"
      }
    };
    或者
    var filter_data = {
      badges: "red"
    };
    db.user.find(
      filter_data
    )
    

    字符串类型数据查询

    //多值查询:查询role为1或者2的数据
    var filter_data = {
      role: {
        $in: [1,2]
      }
    };
    //单值查询:查询role为1的数据
    var filter_data = {
      role: 1
    };
    db.user.find(
      filter_data
    )
    

    对象数组类型数据查询

    //多值查询:查询points数组中points值为85或者60的数据
    var filter_data = {
      'points.points':{
        $in: [85, 60]
      },
      bonus: 20
    };
    或者
    var filter_data = {
      points: {
        $elemMatch: {
          points: {
            $in: [85, 60]
          },
          bonus: 20
        }
      }
    };
    //单值查询:查询points数组中points值为85的数据
    var filter_data = {
      'points.points':85,
      'points.bonus':20,
    };
    或者
    var filter_data = {
      points: {
        $elemMatch: {
          points: 85,
          bonus: 20
        }
      }
    };
    db.user.find(
      filter_data
    )
    
    $elemMatch: 为数组元素指定复合条件,以查询数组中至少一个元素满足所有指定条件的文档。

    { <field>: { $elemMatch: { <query1>, <query2>, ... } } }

    $or: 指定一个使用逻辑 OR 连接词连接各子句的复合查询选择集合中匹配至少一个条件的文档。

    { $or: { <query1>, <query2>, ... } }

    //查询status等于1或者age小于25的数据
    var filter_data = {
      $or: [
        {
          status: 1,
        },
        {
          age: {
            $lt: 25
          },
        }
      ]
    };
    db.user.find(
      filter_data
    )
    
    $type: 类型筛查。

    具体类型见:https://www.runoob.com/mongodb/mongodb-operators-type.html

    //查询name字段类型为字符串的数据
    var filter_data = {
        name: {
          $type: 2,
        },
    };
    db.user.find(
      filter_data
    )
    
    $exists: 存在性筛查。
    //查询name字段存在的数据
    var filter_data = {
        name: {
          $exists: true,
        },
    };
    db.user.find(
      filter_data
    )
    

    相关文章

      网友评论

          本文标题:mongodb使用记录----查询文档

          本文链接:https://www.haomeiwen.com/subject/ieytvhtx.html