MongoDB学习笔记(三)

本文详细介绍了MongoDB的基本操作,包括启动服务、创建与删除数据库、操作集合以及文档的插入、更新和删除。重点讲解了如何连接数据库、创建集合、删除数据库和集合,以及使用update和remove命令来更新和删除文档。示例丰富,帮助理解MongoDB的基础操作。

启动MongoDB服务

[  ]里面的都是可选项,可以不写

mongodb://[username:password@]host1[:port1][,host2[:port2]][...][/[database][?options]]

例子:

mongodb://localhost

mongodb://admin:hwq123456@localhost/test


创建数据库

use DATABASE_NAME

连接数据库服务后,需要创建数据库

例如:

use hwqtest

查看数据列表:show dbs

mongodb有一个默认的数据库test,在没有创建数据库的时候,插入集合中的文档都会给到test数据库中

创建集合(表)后需要再插入一个文档(一行数据),集合才算真正创建,否则只是临时的


删除数据库

db.dropDatabase()

删除某个数据库需要现切换到那个数据库,use DATABASE_NAME

再用db.dropDatabase()


删除集合

db.collection.drop()

显示集合:show tables,但是最好用show collections,会更准确

db.tablename.drop()


创建集合

db.createCollection(name,options)

options可选参数:

字段类型描述
capped布尔(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。
当该值为 true 时,必须指定 size 参数。
autoIndexId布尔(可选)如为 true,自动在 _id 字段创建索引。默认为 false。
size数值(可选)为固定集合指定一个最大值,以千字节计(KB)。
如果 capped 为 true,也需要指定该字段。
max数值(可选)指定固定集合中包含文档的最大数量。

 需要现切换到某个数据库:use DATABASE_NAME

再db.createCollection(name,options)

查看已经创建的集合:show collections或者show tables


删除集合

db.collection.drop()

现切换到某个数据库:use DATABASE_NAME

再db.collectionname.drop()


插入文档

db.COLLECTION_NAME.insert(document)或者db.COLLECTION_NAME.save(document)

  • save():如果 _id 主键存在则更新数据,如果不存在就插入数据。该方法新版本中已废弃,可以使用 db.collection.insertOne()db.collection.replaceOne() 来代替。
  • insert(): 若插入的数据主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常,提示主键重复,不保存当前数据。

新版本的insertOne()和insertMany()

insertOne用法:

db.collection.insertOne(
   <document>,
   {
      writeConcern: <document>
   }
)

insertMany用法:

db.collection.insertMany(
   [ <document 1> , <document 2>, ... ],
   {
      writeConcern: <document>,
      ordered: <boolean>
   }
)

例子:

db.col.insert({title: 'MongoDB 教程', 
    description: 'MongoDB 是一个 Nosql 数据库',
    by: '菜鸟教程',
    url: 'http://www.runoob.com',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
})

 


更新文档

例子:col为一个集合

 

db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})

可以看到标题(title)由原来的 "MongoDB 教程" 更新为了 "MongoDB"。

以上语句只会修改第一条发现的文档,如果你要修改多条相同的文档,则需要设置 multi 参数为 true。

db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})


删除文档

db.collection.remove(

db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)

先插入数据:

db.col.insert({title: 'MongoDB 教程', 
    description: 'MongoDB 是一个 Nosql 数据库',
    by: '菜鸟教程',
    url: 'http://www.runoob.com',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
})

查找数据:

db.col.find()

移除数据:有可能删除多条数据

db.col.remove({'title':'MongoDB 教程'})

查询文档

db.collection.find(query, projection)

如果你需要以易读的方式来读取数据,可以使用 pretty() 方法:

db.col.find().pretty()

查询语句比较:

操作格式范例RDBMS中的类似语句
等于{<key>:<value>}db.col.find({"by":"菜鸟教程"}).pretty()where by = '菜鸟教程'
小于{<key>:{$lt:<value>}}db.col.find({"likes":{$lt:50}}).pretty()where likes < 50
小于或等于{<key>:{$lte:<value>}}db.col.find({"likes":{$lte:50}}).pretty()where likes <= 50
大于{<key>:{$gt:<value>}}db.col.find({"likes":{$gt:50}}).pretty()where likes > 50
大于或等于{<key>:{$gte:<value>}}db.col.find({"likes":{$gte:50}}).pretty()where likes >= 50
不等于{<key>:{$ne:<value>}}db.col.find({"likes":{$ne:50}}).pretty()where likes != 50

AND条件:

db.col.find({key1:value1, key2:value2}).pretty()

 类似于:WHERE by='菜鸟教程' AND title='MongoDB 教程'


OR条件:db.col.find({$or:[{"by":"菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()

db.col.find(
   {
      $or: [
         {key1: value1}, {key2:value2}
      ]
   }
).pretty()

 

OR和AND联合使用:'where likes>50 AND (by = '菜鸟教程' OR title = 'MongoDB 教程')'

db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值