- 基础查询:
db.collection.find({}) // 查询集合中的所有文档
- 条件查询:
db.collection.find({ field: value }) // 查询field字段值为value的文档
-
比较查询:
$eq
:等于$ne
:不等于$gt
:大于$gte
:大于或等于$lt
:小于$lte
:小于或等于
db.collection.find({ age: { $gt: 20 } }) // 查询age字段大于20的文档
-
逻辑查询:
$and
:与$or
:或$not
:非
db.collection.find({ $and: [{ name: "John" }, { age: { $gt: 20 } }] }) // 查询name为John且age大于20的文档
- 正则查询:
db.collection.find({ name: { $regex: /pattern/ } }) // 查询name字段匹配正则表达式pattern的文档
-
数组查询:
$in
:在...中$all
:所有...$size
:大小为...
db.collection.find({ hobbies: { $in: ["reading", "music"] } }) // 查询hobbies字段包含reading或music的文档
- 查询嵌套对象和数组:
使用点符号
.
来访问嵌套的字段。如果要匹配数组中的元素,可以使用数组索引。
db.collection.find({ "address.city": "New York" }) // 查询address字段中city子字段为New York的文档
db.collection.find({ "grades.1": "A" }) // 查询grades数组中第二个元素为A的文档,注意索引从0开始。
- 使用投影限制返回的字段:
在
find()
方法中,可以通过第二个参数指定要返回的字段。使用1表示包含该字段,0表示不包含。
db.collection.find({}, { name: 1, _id: 0 }) // 只返回name字段,不返回_id字段(默认包含)
- 排序、跳过和限制:
使用
sort()
,skip()
, 和limit()
方法来对查询结果进行进一步处理。
db.collection.find().sort({ age: 1 }).skip(10).limit(5) // 按age升序排序,跳过前10个结果,返回接下来的5个结果。
- 使用聚合管道进行更复杂的操作:
$group
,$match
,$sort
等。这部分内容较为复杂,可以查阅MongoDB官方文档了解更多关于聚合管道的使用方法。