MongoDB常用查询语法及与MySQL对比示例
文章目录
一、查询
-
查询所有
– MYSQL:
select * from user;
– MongoDB:
db.user.find(); -
条件查询
– MYSQL:
select * from user where name = ‘张三’;
– MongoDB:
db.user.find({“name”: “张三”}); -
多条件查询
– MYSQL:
select * from user where name = ‘张三’ and sex = 1;
– MongoDB:
db.user.find({“name”: “张三”}, {“sex”: 1}); -
范围查询
– MYSQL:
select * from user where sex = 1 and age >10 and age <=50 and status != 0;
– MongoDB:
db.user.find({“sex”: 1, “age”: {“ g t " : 10 , " gt": 10, " gt":10,"lte”: 50}, “status”: {"$ne": 0}});
– 相关语法
– $gt: 大于
– $lt: 小于
– $gte: 大于或等于
– $lte: 小于或等于
– $ne: 不等于 -
模糊查询
– MYSQL:
select * from user where name like ‘%张%’;
– MongoDB:
db.user.find({“name”: /张/}); -
查询记录条数
– MYSQL:
select count(*) from user where name = ‘张三’ and sex = 1;
– MongoDB:
db.user.find({“name”: “张三”}, {“sex”: 1}).count(); -
排序
– MYSQL:
select * from user where name = ‘张三’ and sex = 1 order by createTime desc;
– MongoDB:(1 为升序,-1 为降序)
db.user.find({“name”: “张三”}, {“sex”: 1}).sort({“createTime”: -1}); -
进阶查询
$in: in$nin: not in
KaTeX parse error: Expected '}', got 'EOF' at end of input: …nd({"count": {"mod": [10, 1]}}) 查询 count % 10 = 1 的记录
KaTeX parse error: Expected '}', got 'EOF' at end of input: …nd({"hobby": {"all": [“游泳”, “篮球”, “阅读”]}}) 满足条件
find({“hobby”: {"$all": [“游泳”, “篮球”]}}) 不满足条件KaTeX parse error: Expected '}', got 'EOF' at end of input: …nd({"hobby": {"size": 3}}) 查询 hobby元素数量为 3的记录
KaTeX parse error: Expected '}', got 'EOF' at end of input: …nd({"hobby": {"exists": true}}) 查询 hobby字段存在的记录
如:find({“hobby”: {"$exists": false}}) 查询 hobby字段不存在的记录KaTeX parse error: Expected '}', got 'EOF' at end of input: …find({"age": {"type": 1}}) 查询 age类型为 string的记录
如:find({“age”: {"$type": 16}}) 查询 age类型为 int的记录KaTeX parse error: Expected '}', got 'EOF' at end of input: …find({"age": {"not": {"$gt": 36}}}) 查询 age<36的记录(这里相当于 $lt )
$or: 逻辑或,注意 KaTeX parse error: Expected '}', got 'EOF' at end of input: … 如:find({"or": [{“age”: 33}, {“age”: 36}]}) 查询 age=33或 age=36的记录
二、增
创建集合(相当于创建数据库中的表)
db.createCollection("demo")
获取指定的集合
db.getCollectionNames()
插入一条数据
save(json类型)
db.demo.save(
{
"username":"user1",
"sex":"男",
"age":"20"
}
)
insertOne(json类型)
db.demo.insertOne(
{
"username":"user2",
"sex":"女"
}
)
插入多条数据
db.demo.insertMany(
[
{
"username":"user3"
},
{
"username":"user4",
"sex":"女"
}
]
)
插入一条或多条数据
db.demo.insert(
{
"username":"user5",
"age":"22"
}
)
获取指定的集合
获取指定的集合
获取指定的集合
获取指定的集合
- List item
三、删
删除所有数据
db.test.remove()
按照条件删除
db.test.remove({"sex":"女"});
删除几条
db.test.remove({"name":"张无忌"},2);
四、改
覆盖当前内容 只能修改一条
db.test.update({"name":"jason1"},{"name":"王五","age":60});
将 name改为王五 age修改为60
db.test.update({"name":"jason1"},{"name":"王五"});
将 name改为王五 age置为空
只改某个key的value使用set 只能修改一条
db.test.update({"name":"张三"},{$set:{"name":"张无忌"}});
只修改name age不变
修改所有的记录
db.test.update({"name":"王五"},{$set:{"name":"张无忌"}},{multi:true});
数据的改成空***数组***
db.test.update({"name":{$exists: true}}, {$set:{'sex':[]}},{multi:true})
数据的改成空***空值***
db.test.update({"name":{$exists: true}}, {$set:{'sex':null}},{multi:true})