MongoDB 基础用法及学习笔记

本文详细介绍了MongoDB的基础环境配置、安装步骤,展示了如何查看版本、启动服务、连接数据库、创建与管理数据库、集合与文档,包括插入、删除、查询、更新和排序操作。通过实例演示,让读者快速上手MongoDB的常用操作和查询技巧。
摘要由CSDN通过智能技术生成

环境配置与安装

安装

查看MongoDB版本

mongo -version

启动MongoDB服务

检查服务状态

service mongodb status

启动服务

service mongodb start

打开配置文件,连接MongoDB

mongo

查看数据列表

show dbs

退出

exit

MongoDB 连接

mongo

MongoDB 数据库操作

创建数据库

use DATABASE_NAME

DATABASE_NAME:自定义数据库名称

例:

use testdb	# 创建数据库 - testdb
db			# 查看数据库名称

查看所有数据库:

show dbs

插入数据

db.testdb.insert({"name":"FreeAIHub"})
show dbs

MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。

删除数据库

db.dropDatabase()

创建集合

db.createCollection(name, options)

参数说明:

  • name: 要创建的集合名称
  • options: 可选参数, 指定有关内存大小及索引的选项

举例:

testdb 数据库中创建 c1集合:

use testdb
db.createCollection("c1")

查看已有集合:

show collections

创建固定集合 mycol,整个集合空间大小 6142800 KB, 文档最大个数为 10000 个。

db.createCollection("c11", { capped : true, autoIndexId : true, size : 6142800, max : 10000 } )

在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。

db.c11.insert({"name" : "FreeAIHub"})
show collections

删除集合

db.collection.drop()

MongoDB 文档操作

准备测试数据:

use testdb
db.c7.insert({
    title: '动手学Redis', 
    description: '极速内存数据库',
    by: 'FreeAIHub',
    url: 'http://www.freeaihub.com',
    tags: ['redis'],
    likes: 200
})
 
db.c7.insert({title: '动手学Java', 
    description: 'Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。',
    by: 'FreeAIHub',
    url: 'http://www.freeaihub.com',
    tags: ['java'],
    likes: 150
})
 
db.c7.insert({title: '动手学mongoDB', 
    description: 'MongoDB 是一个 Nosql 数据库',
    by: 'mongo',
    url: 'http://www.freeaihub.com',
    tags: ['mongodb'],
    likes: 100
})

MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:

db.COLLECTION_NAME.insert(document)

举例:

以下文档可以存储在 MongoDB 的 testdb数据库 的 col 集合中:

use testdb
db.c1.insert({title: '动手学MongoDB', 
    description: 'MongoDB 是一个 Nosql 数据库',
    tags: ['mongodb', 'database', 'NoSQL'],
})

以上实例中 c1是我们的集合名,如果该集合不在该数据库中, MongoDB 会自动创建该集合并插入文档。

查看已插入的文档

db.c1.find()

我们也可以将数据定义为一个变量,如下所示:

document=({title: '动手学MongoDB', 
    description: 'MongoDB 是一个 Nosql 数据库',
    tags: ['mongodb', 'database', 'NoSQL'],
});
#执行插入操作:
db.c2.insert(document)
db.c2.find()

更新文档

MongoDB 使用 update()ave() 方法来更新集合中的文档。接下来让我们详细来看下两个函数的应用及其区别。

update() 方法

update() 方法用于更新已存在的文档。语法格式如下:

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)

参数说明:

  • query : update的查询条件,类似sql update查询内where后面的。
  • update : update的对象和一些更新的操作符(如,inc…)等,也可以理解为sql update查询内set后面的
  • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • writeConcern :可选,抛出异常的级别。

举例:

db.c3.insert({
    title: '动手学MongoDB', 
    description: 'MongoDB 是一个 Nosql 数据库',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
})

通过 update() 方法来更新标题(title):

db.c3.update({'title':'动手学MongoDB'},{$set:{'title':'MongoDB动手学'}})
db.c3.find().pretty()

可以看到标题(title)由原来的 “动手学MongoDB” 更新为了 “MongoDB动手学”。

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

db.col.update({'title':'动手学MongoDB'},{$set:{'title':'New Title you want'}},{multi:true})

save() 方法

save() 方法通过传入的文档来替换已有文档。语法格式如下:

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

参数说明:

  • document : 文档数据。
  • writeConcern :可选,抛出异常的级别。

举例:

以下实例中我们先插入一条数据,查找到其 ObjectId ,再使用 save 方法,根据这个 id 替换数据:

db.c4.insert({
    title: '动手学MongoDB', 
    description: 'MongoDB 是一个 Nosql 数据库',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
})
db.c4.find()
db.c4.save({
    "_id" : ObjectId("在此处填写上面得到的ObjectID"),
    "title" : "MongoDB动手学"
})

替换成功后,我们可以通过 find() 命令来查看替换后的数据

db.c4.find().pretty()

查询文档

MongoDB 查询数据的语法格式如下:

db.collection.find(query, projection)
  • query :可选,使用查询操作符指定查询条件
  • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

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

db.col.find().pretty()

pretty() 方法以格式化的方式来显示所有文档。

MongoDB 与 RDBMS Where 语句比较

如果你熟悉常规的 SQL 数据,通过下表可以更好的理解 MongoDB 的条件语句查询:

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

MongoDB AND 条件

MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。

语法格式如下:

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

举例:

db.c7.find({"by":"FreeAIHub", "title":"动手学Redis"}).pretty()

MongoDB OR 条件

MongoDB OR 条件语句使用了关键字 $or,语法格式如下:

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

举例:

db.c7.find({$or:[{"by":"mongo"},{"title": "mongo"}]}).pretty()

AND 和 OR 联合使用

db.c7.find({"likes": {$gt:50}, $or: [{"by": "freeaihub"},{"title": "动手学mongoDB"}]}).pretty()

MongoDB 条件操作符

条件操作符用于比较两个表达式并从mongoDB集合中获取数据。

在本章节中,我们将讨论如何在MongoDB中使用条件操作符。

MongoDB中条件操作符有:

  • (>) 大于 - $gt
  • (<) 小于 - $lt
  • (>=) 大于等于 - $gte
  • (<= ) 小于等于 - $lte

MongoDB Limit与Skip方法

MongoDB Limit() 方法

如果你需要在 MongoDB 中读取指定数量的数据记录,可以使用 MongoDB 的 Limit 方法,limit() 方法接受一个数字参数,该参数指定从 MongoDB 中读取的记录条数。

语法:

limit() 方法基本语法如下所示:

db.COLLECTION_NAME.find().limit(NUMBER)

举例:

集合 col 中的数据如下:

use testdb
db.c8.insert({
    title: '动手学Redis', 
    description: '极速内存数据库',
    by: 'FreeAIHub',
    url: 'http://www.freeaihub.com/redis/',
    tags: ['redis'],
    likes: 200
})
 
db.c8.insert({title: '动手学Java', 
    description: 'Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。',
    by: 'FreeAIHub',
    url: 'http://www.freeaihub.com/java/',
    tags: ['java'],
    likes: 150
})
 
db.c8.insert({title: 'MongoDB 教程', 
    description: 'MongoDB 是一个 Nosql 数据库',
    by: 'freeaihub',
    url: 'http://www.freeaihub.com/mongodb/',
    tags: ['mongodb'],
    likes: 100
})

以下实例为显示查询文档中的两条记录:

db.c8.find({},{"title":1,_id:0}).limit(2)

MongoDB Skip() 方法

我们除了可以使用 limit() 方法来读取指定数量的数据外,还可以使用 skip() 方法来跳过指定数量的数据,skip 方法同样接受一个数字参数作为跳过的记录条数。

语法:

db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

举例:

db.c8.find({},{"title":1,_id:0}).limit(1).skip(1)

MongoDB 排序

MongoDB sort() 方法

在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1-1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。

语法:

db.COLLECTION_NAME.find().sort({KEY:1})

举例:

将如下数据插入至c9集合中

use testdb
db.c9.insert({
    title: '动手学Redis', 
    description: '极速内存数据库',
    by: 'FreeAIHub',
    url: 'http://www.freeaihub.com',
    tags: ['redis'],
    likes: 200
})
 
db.c9.insert({title: '动手学Java', 
    description: 'Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。',
    by: 'FreeAIHub',
    url: 'http://www.freeaihub.com',
    tags: ['java'],
    likes: 150
})
 
db.c9.insert({title: 'MongoDB 教程', 
    description: 'MongoDB 是一个 Nosql 数据库',
    by: 'freeaihub',
    url: 'http://www.freeaihub.com',
    tags: ['mongodb'],
    likes: 100
})

数据按字段 likes 的降序排列:

db.c9.find({},{"title":1,_id:0}).sort({"likes":-1})

数据按字段 likes 的升序排列:

db.c9.find({},{"title":1,_id:0}).sort({"likes":1})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Warolitbos

如果有帮助,请我喝咖啡!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值