mongoDB的高级查询和高级修改

本文详细介绍了MongoDB的高级查询和修改操作,包括条件查询、排序、分页、更新操作如$set、$inc等,以及特殊操作符的使用,如$all、$exists、$mod等,帮助读者深入理解MongoDB的数据操作。
摘要由CSDN通过智能技术生成

    Mongodb,分布式文档存储数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。Mongo使用C++开发。

    MongoDB是一个基于分布式文件存储的数据库。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。
    Mongo最大的特点是支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
    MongoDB服务端可运行在Linux、Windows或Mac平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。

   热身:

    show dbs 显示所有的数据库
    exit 退出
    db 当前数据库
    show tables  /  show collections  当前数据库有多少张表(集合)
    db.c1.insert({name:"user1"});   插入一条数据
    db.c1.save({name:"user1"});    插入一条数据
    两者区别:
    如果要插入的_id相同,save可以操作,_id相同则更改,不同则插入。


但是insert会报错:


db.c1.find();    查询c1表中所有数据
db.c1.find("条件");  查询符合该条件的所有记录
db.c1.findOne();   只查询第一条记录
db.c1.findOne("条件");   只查询符合该条件的第一条记录
进入data目录下查看:


db.c1.remove();    删除c1集合中所有的数据
db.c1.remove("条件");    删除c1集合中符合条件的所有的数据
修改数据把user3修改成user30:
若已经插入db.c1.insert({name:"user3",age:30});
{ "_id" : ObjectId("54cc83821e766bd0fad100e2"), "name" : "user3", "age" : 30 }
db.c1.update({name:"user3"},{name:"user30"});  
但是修改后的记录是:
{ "_id" : ObjectId("54cc83821e766bd0fad100e2"), "name" : "user30" }
少掉了age:30
若不丢失其他json数据,则这样进行修改即可:
db.c1.update({name:"user3"},{$set:{name:"user300"}});   //和删除一样,第一个参数里面是条件匹配
若要增加json数据,则这样进行修改即可:
db.c1.update({name:"user300"},{$set:{sex:"boy"}});
{ "_id" : ObjectId("54cc83821e766bd0fad100e2"), "age" : 30, "name" : "user300", "sex" : "boy" }
子json插入:
db.c1.insert({name:"user1",post:{title:1,content:"hello"}});
子数组插入:
db.c1.insert({name:"user2",post:[1,2,3,4,5]});
{ "_id" : ObjectId("54cc8efabe9bf76a3494b725"), "name" : "user1", "post" : { "title" : 1, "content" : "hello" } }
{ "_id" : ObjectId("54cc8f98be9bf76a3494b726"), "name" : "user2", "post" : [ 1, 2, 3, 4, 5 ] }
写个循环语句进行插入:


如果只要查询某一条记录的某一列,需要设置find的第二个参数即可,如设置name:1,表示只显示name这一列:
 db.c1.find({name:"user11"});
{ "_id" : ObjectId("54cc937428be09ca6a8023ba"), "name" : "user11", "age" : 20, "sex" : "boy" }
 db.c1.find({name:"user11"},{name:1});
{ "_id" : ObjectId("54cc937428be09ca6a8023ba"), "name" : "user11" }
db.c1.find({name:"user11"},{name:1,age:1});
{ "_id" : ObjectId("54cc937428be09ca6a8023ba"), "name" : "user11", "age" : 20 }


如果不想带上_id, _id:0.
db.c1.find({name:"user11"},{name:1,age:1,_id:0});
{ "name" : "user11", "age" : 20 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值