mongoDB 常用命令 (3) -- 查询文档之基本查询

88 阅读1分钟

插入文档

db.products.insertMany([
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
   { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);

查询所有文档

db.inventory.find( {} )

格式化打印结果:

db.inventory.find().pretty()

指定返回的文档字段

db.inventory.find({}, {
	item: 1,
  qty: 1
})

相等条件查询

db.inventory.find( { status: "D" } )

指定 AND 条件

以下示例检索状态为“ A”且数量小于($ lt)30的清单集合中的所有文档:

db.inventory.find( { status: "A", qty: { $lt: 30 } } )

该操作对应于以下SQL语句: 

SELECT * FROM inventory WHERE status = "A" AND qty < 30

指定 OR 条件

使用 $or 运算符,您可以指定一个复合查询,该查询将每个子句与一个逻辑或连接相连接,以便该查询选择集合中至少匹配一个条件的文档。

下面的示例检索状态为 A 或数量小于 $lt30 的集合中的所有文档:

db.inventory.find({
  $or: [
    { status: "A" },
    { qty: { $lt: 30 } }
  ]
})

该操作对应于以下 SQL 语句:

SELECT * FROM inventory WHERE status = "A" OR qty < 30

指定 AND 和 OR 条件

在下面的示例中,复合查询文档选择状态为“ A”且qty小于($ lt)30或item以字符p开头的所有文档:

db.inventory.find({
  status: "A",
  $or: [ { qty: { $lt: 30 } }, { item: /^p/ } ]
})

该操作对应于以下SQL语句:

SELECT * FROM inventory WHERE status = "A" AND ( qty < 30 OR item LIKE "p%")

使用查询运算符指定条件

下面的示例从状态为“ A”或“ D”等于“库存”的清单集中检索所有文档:

db.inventory.find( { status: { $in: [ "A", "D" ] } } )

该操作对应以下 SQL 语句:

SELECT * FROM inventory WHERE status in ("A", "D")

完成的查询运算符参考:docs.mongodb.com/manual/refe…

查询运算符

参考:docs.mongodb.com/manual/refe…

比较运算符:

名称描述
$eq匹配等于指定值的值。
$gt匹配大于指定值的值。
$gte匹配大于或等于指定值的值。
$in匹配数组中指定的任何值。
$lt匹配小于指定值的值。
$lte匹配小于或等于指定值的值。
$ne匹配所有不等于指定值的值。
$nin不匹配数组中指定的任何值。

逻辑运算符:

名称描述
$and将查询子句与逻辑连接,并返回与这两个子句条件匹配的所有文档。
$not反转查询表达式的效果,并返回与查询表达式不匹配的文档。
$nor用逻辑NOR连接查询子句,返回所有不能匹配这两个子句的文档。
$or用逻辑连接查询子句,或返回与任一子句条件匹配的所有文档。

本文正在参加「技术专题19期 漫谈数据库技术」活动