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

2020-04-15  本文已影响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
)
上一篇下一篇

猜你喜欢

热点阅读