mongodb 学习笔记

 
基础教程
 
http://www.runoob.com/mongodb/mongodb-tutorial.html
 
官方文档
 
https://docs.mongodb.com/
 
SQL与MongoDB的映射关系
 
如果对关系型数据库比较了解,下面的链接将对你非常有帮助
 
https://docs.mongodb.com/manual/reference/sql-comparison/
 
mac安装
 
brew install mongodb
 
客户端
 
robomongo https://robomongo.org/
 
连接mongodb
 
mongo
 
显示所有数据库
 
show dbs
 
创建/切换数据库
 
use test
 
删除数据库
 
db.dropDatabase()
 
插入文档
 
db.col.inset({"x":10})
db.col.save({"x":11})
 
删除集合
 
db.col.drop()
 
查看所有集合
 
show collections
 
定义变量
 
document = {"y":123};
db.col.insert(document);
 
更新文档
 
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
);
 
  • query: update的查询条件
  • update: update的对象和一些更新的操作符
  • upsert: 可选,如果不存在update的记录,则插入,默认false
  • multi: 可选,默认false,只更新找到的第一条记录,true则更新找到的所有记录
  • writeConcern: 可选,抛出异常的级别
 
db.collection.save(
<document>,
{
writeConcern: <document>
}
);
 
  • document:  文档数据
  • writeConcern: 可选,抛出异常的级别
  • 如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。
 
db.col.update({"x":10}, {"x":13}, {upsert:true, multi:true})
db.col.update({"x":10}, {$set: {"x":13}}, true, true)
db.col.save({"x": 10})
db.col.save({“_id”:”34fdfd343”})
 
删除文档
 
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
 
db.col.remove({“x”: 13});
 
查询文档
 
db.col.find()
db.col.findOne()
db.col.find().pretty()
 
db.col.find({"x":12})
db.col.find({"x":{$eq:12}})
db.col.find({"x":{$lt:12}})
db.col.find({"x":{$lte:12}})
db.col.find({"x":{$gt:12}})
db.col.find({"x":{$gte:12}})
db.col.find({"x":{$ne:12}})
db.col.find({"x":12,"x”:{$ne:13}})
db.col.find({$or:[{"x":12},{"x":13}]})
 
$type操作符
 
$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果
 
类型数字备注
Double1 
String2 
Object3 
Array4 
Binary data5 
Undefined6已废弃。
Object id7 
Boolean8 
Date9 
Null10 
Regular Expression11 
JavaScript13 
Symbol14 
JavaScript (with scope)15 
32-bit integer16 
Timestamp17 
64-bit integer18 
Min key255Query with -1.
Max key127
 
 
db.col.find({"x":{$type:2}})
 
limit与skip
 
db.col.find({"x":12}).limit(2)
db.col.find({"x":12}).skip(2)
 
sort排序
 
db.col.find().sort({"x":1})
db.col.find().sort({"x":-1})
 
index索引
 
# 创建索引
db.col.ensureIndex({"x”:1})
db.col.ensureIndex({"x":-1})
db.col.ensureIndex({"x":1, "y":-1})
 
ParameterTypeDescription
backgroundBoolean建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 "background" 可选参数。 "background" 默认值为false
uniqueBoolean建立的索引是否唯一。指定为true创建唯一索引。默认值为false.
namestring索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。
dropDupsBoolean在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false.
sparseBoolean对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false.
expireAfterSecondsinteger指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。
vindex version索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。
weightsdocument索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。
default_languagestring对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语
language_overridestring对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language.
 
 
db.col.ensureIndex({"x":1}, {background: true})
 
聚合
 
db.col.drop()
db.col.insert({
  title: 'MongoDB Overview',
  description: 'MongoDB is no sql database',
  by_user: 'w3cschool.cc',
  url: 'http://www.w3cschool.cc',
  tags: ['mongodb', 'database', 'NoSQL'],
  likes: 100
})
db.col.insert({
title: 'NoSQL Overview',
  description: 'No sql database is very fast',
  by_user: 'w3cschool.cc',
  url: 'http://www.w3cschool.cc',
  tags: ['mongodb', 'database', 'NoSQL'],
  likes: 10
})
db.col.insert({
title: 'Neo4j Overview',
  description: 'Neo4j is no sql database',
  by_user: 'Neo4j',
  url: 'http://www.neo4j.com',
  tags: ['neo4j', 'database', 'NoSQL'],
  likes: 750
})
db.col.aggregate([{$group:{_id:"$by_user", num_tutorial:{$sum:1}}}])
 

 

表达式描述实例
$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根据资源文档的排序获取第一个文档数据。db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
$last根据资源文档的排序获取最后一个文档数据db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])

转载于:https://www.cnblogs.com/jxlwqq/p/5609659.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值