第三章 MongoDB的增删改查(3)
第三章 MongoDB的增删改查(3)
本章介绍了MongoDB的常用操作,具体包括如下:
- 插入文档
- 删除文档
- 更新文档
- 查找文档
1.查找文档
db.collection.find(query, projection)
参数 | 类型 | 说明 |
---|---|---|
query | document | 可选。 指定查询条件,返回所有满足条件的文档。 |
projection | document | 可选。 指定返回字段。如果没有指定,返回文档的所有字段 |
简单查询
db.books.remove({})
db.books.insertMany(
{"_id": 1, "name": "java", amount: 20}
{"_id": 2, "name": "mysql", amount: 30}
{"_id": 3, "name": "linux", amount: 40}
)
-- 查找所有文档
db.books.find({})
-- 等值查询
db.books.find({"name": "java"})
-- 返回指定字段 _id字段会默认返回, 除非指定{_id: 0}
db.books.find({"_id": 1}, {"name": 1})
{
"_id": 1, "name": "java"
}
使用操作符查询
Mongodb提供许多查询操作符帮助我们查询在集合中的文档
- 使用 $in 操作符返回集合中 _id 等于5或者 8
db.bios.find(
{ _id: { $in: [ 5, 6] } }
)
- 使用 $gt 操作符返回出生日期在 1998-01-01 之后的文档
db.bios.find( { birth: { $gt: new Date('1998-01-01') } } )
- 范围查询
db.bios.find( { birth: { $gt: new Date('1940-01-01'), $lt: new Date('1960-01-01') } } )
- 多条件查询
db.bios.find( {
birth: { $gt: new Date('1920-01-01') },
death: { $exists: false }
} )
嵌套查询
- 精确的查询嵌套文档
-- 当嵌套文档name精确匹配{first: "Yukihiro", last: "Matsumoto"}条件,包括顺序
,才返回文档
db.bios.find(
{ name: { first: "Yukihiro", last: "Matsumoto" } }
)
-- 上面的条件并不会匹配以下嵌套文档
-- 1.该文档多一个字段,不能精确匹配
{
first: "Yukihiro",
aka: "Matz",
last: "Matsumoto"
}
-- 2.顺序不一样,不能精确匹配
{
last: "Matsumoto",
first: "Yukihiro"
}
- 查询嵌套文档的字段
当嵌套文档name包含字段first的值为 Yukihiro 和字段last的值为 Matsumoto,返回文档
db.bios.find(
{
"name.first": "Yukihiro",
"name.last": "Matsumoto"
}
)
-- 下面两个嵌套文档能被匹配
{
first: "Yukihiro",
aka: "Matz",
last: "Matsumoto"
}
{
last: "Matsumoto",
first: "Yukihiro"
}
查询数组
- 数组contribs包含元素"UNIX"时,返回文档
db.bios.find( { contribs: "UNIX" } )
- 数组包含元素"ALGOL"和"Lisp",返回文档
db.bios.find( { contribs: { $all: [ "ALGOL", "Lisp" ] } } )