1. MongoDB 简介
MongoDB 是一款基于分布式文件存储的数据库。它的数据以 BSON(一种类 JSON 的二进制形式)的格式进行存储。MongoDB 是 NoSQL 数据库的类型之一,数据库的表是没有固定的结构的。
2. MongoDB 的查询语句
MongoDB 的查询语句是指对数据库中的数据进行查询,可以根据数据的条件、范围、类型等进行查询。
2.1 查询所有数据
如果不设置查询条件,则查询语句将返回所有数据。
db.collection.find()
注:其中 collection 表示要查询的集合名称。
2.2 根据条件查询数据
可以使用 find() 方法来进行条件查询,可以指定查询的条件。
db.collection.find(查询条件)
例如:
db.students.find({name:'小明'})
上面的查询语句将查找名字为“小明”的学生数据。
2.3 按条件查询并返回指定字段
可以使用 find() 方法返回指定字段的数据,只需在查询条件中添加需要返回的字段。
db.collection.find(查询条件,{'字段名':1})
例如:
db.students.find({class:'三年二班'},{name:1, age:1, address:1})
上面的查询语句将查找所有在“三年二班”的学生的名字、年龄和地址。
2.4 按条件排序查询
可以使用 sort() 方法将数据按指定字段排序查询。排序方法有升序和降序两种。
db.collection.find(查询条件).sort({'字段名':排序方法})
例如:
// 按年龄升序查询数据
db.students.find({class:'三年二班'}).sort({age:1})
// 按年龄降序查询数据
db.students.find({class:'三年二班'}).sort({age:-1})
3. MongoDB 的查询操作符
MongoDB 中的查询操作符是指用来对查询条件进行限制和匹配的符号。
3.1 $gt:大于
使用大于操作符 $gt,查询满足条件的数据。
db.collection.find({'age':{$gt:18}})
上面的查询语句将查找年龄大于18岁的学生数据。
3.2 $lt:小于
使用小于操作符 $lt,查询满足条件的数据。
db.collection.find({'age':{$lt:18}})
上面的查询语句将查找年龄小于18岁的学生数据。
3.3 $in:包含
使用包含操作符 $in,查询包含指定值的数据。
db.collection.find({'name':{$in:['小明', '小红']}})
上面的查询语句将查找名字为“小明”或“小红”的学生数据。
3.4 $and:同时满足多个条件
使用与操作符 $and,查询同时满足多个条件的数据。
db.collection.find({$and:[{'name':'小明'}, {'age':18}]})
上面的查询语句将查找名字为“小明”且年龄为18岁的学生数据。
3.5 $or:满足其中一个条件
使用或操作符 $or,查询满足其中一个条件的数据。
db.collection.find({$or:[{'name':'小明'}, {'age':{$gt:18}}]})
上面的查询语句将查找名字为“小明”或年龄大于18岁的学生数据。
4. MongoDB 的高级查询
MongoDB 中还有一些高级查询操作,可以实现更复杂的查询需求。
4.1 $exists:判断字段是否存在
使用 exists 操作符,查询指定字段是否存在。
db.collection.find({'field':{'$exists':true/false}})
例如,查询所有有地址的学生数据:
db.students.find({address:{$exists:true}})
4.2 $regex:正则表达式查询
使用正则表达式来查询数据,可以匹配指定的字符、数字、空格等。
db.collection.find({field:/正则表达式/})
例如,查询所有以“小”开头的学生名字:
db.students.find({name:{$regex:/^小/}})
4.3 $near:根据距离查询
使用 near 操作符,查询距离指定地点最近的数据。
db.collection.find({location:{$near: [latitude, longitude]}})
5. 总结
MongoDB 是一款灵活、可扩展、高性能的 NoSQL 数据库,提供了丰富的查询操作符和高级查询功能,方便用户进行数据查询和分析。