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

基础语法

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
)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目录 查询操作 集合查询方法 find() 查询内嵌文档 查询操作符(内含 数组查询) "$gt" 、"$gte"...
    彩虹之梦阅读 4,645评论 0 1
  • 主要是说明mongodb的数据查询方法,本次不使用mongo shell来操作,使用图形化操作软件Robo来执行m...
    Spareribs阅读 9,483评论 1 10
  • 一 基本概念 MongoDB中数据的结构为:库、集合、文档 1 数据库 多个集合可以组成数据库。MongoDb的单...
    周东波_db阅读 7,073评论 0 4
  • 1、数据库管理命令 1.1、查看数据 show dbs:可以查看当前mongod中的所有数据库;db:可以查看当前...
    桥头放牛娃阅读 4,563评论 2 49
  • 老人曾对我说:你对生活付出的努力,将会滋养你,温暖你,并且丰满你的气质。然而,一个内心平静的人气质也不会太差。对生...
    野仔阅读 1,664评论 0 2