mongodb基本知识,增删改查操作

添加环境变量

 

管理员cmd

 

设置数据存储位置 

mongod.exe --dbpathE:\MongoDB\data\db

 

安装至windows服务

mongod.exe --logpath"E:\MongoDB\logs\logs.log" --logappend --dbpath"E:\MongoDB\data" --directoryperdb --serviceName MongoDB --install

 

use mydb 若没有则创建数据库

 

检查当前使用的数据库  db

 

查询数据库列表 show dbs  空的数据库不显示

 

 

db.dropDatabase()默认删除正在使用的数据库,如果没有选择删除test

 

 创建集合

 

MongoDB的 db.createCollection(name, options) 用于创建集合。 在命令中, name 是要创建集合的名称。 Options 是一个文档,用于指定集合的配置

参数         类型        描述

Name        String        要创建的集合的名称

Options        Document        (可选)指定有关内存大小和索引选项

 

 db.createCollection('mycollection')

 

show collections 显示创建的集合

 

字段

类型

描述

capped

Boolean

(可选)如果为true,它启用上限集合。上限集合是一个固定大小的集合,当它达到其最大尺寸会自动覆盖最老的条目。 如果指定true,则还需要指定参数的大小。

autoIndexID

Boolean

(可选)如果为true,自动创建索引_id字段。默认的值是 true

size

number

(可选)指定的上限集合字节的最大尺寸。如果capped 是true,那么还需要指定这个字段。

max

number

(可选)指定上限集合允许的最大文件数。

 

 

>db.createCollection("mycol",{capped:true,autoIndexId:true,size:6142800,max:1000})

{

        "note" : "theautoIndexId option is deprecated and will be removed in a future release",

        "ok" : 1

}

 

 

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

>db.mycol.insert({"name":"xuhaixing"})

WriteResult({"nInserted" : 1 })

> show collections

mycol

mycollection

 

 drop() 删除集合

 

db.COLLECTION_NAME.drop()

 

 _id 是12个字节十六进制数在一个集合的每个文档是唯一的。 12个字节被划分如下:

 

_id: ObjectId(4 bytestimestamp, 3 bytes machine id, 2 bytes process id, 3 bytes incrementer)

 

 insert()命令的基本语法如下:

 

>db.COLLECTION_NAME.insert(document)

 

插入多个文档到集合 db.mycol.insert([{title:"aaa"},{title:"bbb"}])

 

 db.mycol.find().pretty()查询集合中文档

除了find()方法还有findOne()方法,仅返回一个文档。

 

RDBMS Where子句等效于MongoDB

查询文档在一些条件的基础上,可以使用下面的操作

操作

语法

示例

RDBMS等效语句

Equality

{<key>:<value>}

db.mycol.find({"by":"yiibai tutorials"}).pretty()

where by = 'yiibai tutorials'

Less Than

{<key>:{$lt:<value>}}

db.mycol.find({"likes":{$lt:50}}).pretty()

where likes < 50

Less Than Equals

{<key>:{$lte:<value>}}

db.mycol.find({"likes":{$lte:50}}).pretty()

where likes <= 50

Greater Than

{<key>:{$gt:<value>}}

db.mycol.find({"likes":{$gt:50}}).pretty()

where likes > 50

Greater Than Equals

{<key>:{$gte:<value>}}

db.mycol.find({"likes":{$gte:50}}).pretty()

where likes >= 50

Not Equals

{<key>:{$ne:<value>}}

db.mycol.find({"likes":{$ne:50}}).pretty()

where likes != 50

 

and

db.mycol.find({"sex":"m","title":"liuyifei"})

 

Or

db.mycol.find(

   {

      $or: [

     {key1: value1}, {key2:value2}

      ]

   }

).pretty()

 

db.mycol.find({$or:[{"title":"liuyifei"},{"age":25}]})

{ "_id" :ObjectId("59bb234487e7c8628038c51c"), "title" :"zhaoliying", "age" : 25, "sex" : "m" }

{ "_id" :ObjectId("59bb235187e7c8628038c51d"), "title" :"liuyifei", "age" : 28, "sex" : "m" }

 

and和or连用

 db.mycol.find({"age":{$gt:26},$or:[{"sex":"f"}]})

{ "_id" :ObjectId("59bb258787e7c8628038c51e"), "title" :"fanbingbing", "age" : 40, "sex" : "f"}

 

 

Update

db.mycol.update({"title":"xuhaixing"},{$set:{"title":"daS"}})

db.mycol.update({"title":"xiaoS"},{$set:{"age":32,"title":"daS"}})

update多条数据

db.mycol.update({"sex":"m"},{$set:{"sex":"f"},{multi:true}})

 

save有替换,没有插入

db.mycol.save({"_id":ObjectId("59bb258787e7c8628038c51e"),"title":"xiaoS"})

 

 删除文档

 

MongoDB的 remove(,)方法用于从集合中删除文档。remove()方法接受两个参数。一个是标准缺失,第二是justOne标志

 

    deletion criteria : 根据文件(可选)删除条件将被删除。

 

    justOne : (可选)如果设置为true或1,然后取出只有一个文档。

 

> db.mycol.remove({"sex":"f"},1) 只删除一个

WriteResult({"nRemoved" : 1 })

 db.mycol.remove()删除所有

 

 

MongoDB投影

MongoDB的find()方法,解释了MongoDB中查询文档接收的第二个可选的参数是要检索的字段列表。在MongoDB中,当执行find()方法,那么它会显示一个文档的所有字段。要限制这一点,需要设置字段列表值为1或0。1是用来显示字段,而0被用来隐藏字段。

 db.mycol.find({},{"_id":0,"title":1})只显示id

 

limit()和skip(),显示文档数,跳过文档数

>db.mycol.find().limit(1)

{ "_id" :ObjectId("59bb234487e7c8628038c51c"), "title" :"zhaoliying", "age" : 25, "sex" : "f" }

>db.mycol.find().limit(1).skip(1)

{ "_id" :ObjectId("59bb235187e7c8628038c51d"), "title" :"liuyifei", "age" : 28, "sex" : "f" }

 

sort()接受一个包含字段列表以及排序顺序的文档,1升序,-1降序

db.mycol.find({},{"_id":0}).sort({"age":1,"title":1})

 

索引1升序 -1降序

>db.mycol.ensureIndex({"title":1,"age":-1})

 

ensureIndex() 方法还接受选项列表(这是可选),其列表如下:

参数

类型

描述

background

Boolean

构建索引在后台以便建立索引不阻止其它数据库活动。指定true时建立在后台。缺省值是false.

unique

Boolean

创建一个唯一的索引,以使集合将不接受插入的的文档,其中的索引关键字或键匹配索引的现有值。指定true以创建唯一索引。缺省值是 false.

name

string

索引的名称。如果未指定,MongoDB通过连接索引的字段和排序顺序的名称生成一个索引名。

dropDups

Boolean

创建一个字段唯一索引时可能会有重复。MongoDB索引键仅第一次出现,并从集合中删除包含该键后续出现的所有文档。指定true以创建唯一索引。缺省值是 false.

sparse

Boolean

如果为true,索引只引用与指定的字段的文档。这些索引使用更少的空间,但在某些情况下表现不同(特别是排序)。缺省值是 false.

expireAfterSeconds

integer

指定的值,以秒为单位,作为一个TTL控制MongoDB保留在此集合文件多久。

v

index version

索引版本号。默认的索引版本取决于mongod创建索引时运行的版本。

weights

document

重量(weight )是一个数字,它是从1至99,999的数字,表示字段相对于其它索引字段在得分方面的意义。

default_language

string

对于文本索引,并为词干分析器和标记生成器列表中的语言决定了停用词和规则。它的默认值: english.

language_override

string

对于一个文本索引,包含在文档中指定字段的名称,语言来覆盖默认语言。它的默认值:language.

 

 

 

 

MongoDB 聚合

 

 

>db.mycol.aggregate([{$group:{_id:"$age",numages:{$sum:1}}}])  统计相同年龄段的人数

{ "_id" :30, "numages" : 2 }

{ "_id" :28, "numages" : 1 }

{ "_id" :25, "numages" : 1 }

db.mycol.aggregate([{$group:{_id:"$sex",numages:{$max:"$age"}}}])不同性别年龄最大的人

表达式

描述

示例

$sum

从集合累加所有文档中的定义值

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])

$avg

从集合中的所有文档计算所有给定值的平均值

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])

$min

从集合中获取的所有文件的最小的相应值

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])

$max

从集合中的所有文档中的相应值中获取最大值

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])

$push

插入数组值到文档中

db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])

$addToSet

插入值所产生的数组到文档中,但不会产生重复

db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])

$first

从源文件获取根据分组的头文件。通常,这使得只能意会再加上一些以前应用“$sort” -stage 

db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])

$last

从源文件获取根据分组的最后文件。通常,这使得只能意会再加上一些以前应用 “$sort”-stage.

db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])

 

 

db.stats()显示当前数据库的信息

db.help()显示帮助

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值