插入文档
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期 漫谈数据库技术」活动