MongoDB常用查询语法及与MySQL对比示例

本文详细介绍了MongoDB的查询语法,包括查询所有、条件查询、多条件查询、范围查询、模糊查询、排序等,并与MySQL进行了对比。同时,还涉及到增、删、改操作的基本用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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})
覆盖当前内容
覆盖当前内容
覆盖当前内容
覆盖当前内容
覆盖当前内容
覆盖当前内容
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值