MongoDB学习笔记(二)

一、Mongodb命令

说明:Mongodb命令是区分大小写的,使用的命名规则是驼峰命名法。
对于database和collection无需主动创建,在插入数据时,如果database和collection不存在则会自动创建。

常用命令

help命令
通过此命令可以看到一些最基本的命令,如图:

use命令
例如命令【use demodb】,创建demodb,不用担心demodb不会创建,当使用use demodb 命令创建第一个collection时会自动创建数据库demodb,如图: 

插入数据
使用命令【db.collectionName.insert({name:"jack",age:33})】collectionName中插入一个document,如果collectionName不存在则创建。 使用命令【db.getCollectionNames()】会得到collectionName和system.indexex。system.indexex对于每个database都有,用于记录index。 使用命令【db.collectionName.find()】会查看到collectionName中的所有document。 命令如下:

E:\MongoDB\bin>mongo
MongoDB shell version: 2.6.5
connecting to: test
> use demodb
switched to db demodb
> db.FirstCollection.insert({name:"jack",age:22})
WriteResult({ "nInserted" : 1 })
> show collections
FirstCollection
system.indexes
> db.getCollectionNames()
[ "FirstCollection", "system.indexes" ]
> db.demodb.find()
> db.FirstCollection.find()
{ "_id" : ObjectId("543731431dc491f307663a0d"), "name" : "jack", "age" : 22 }
> db.system.indexes.find()
{ "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "demodb.FirstCollection" }

查询数据

参考网址:http://www.cnblogs.com/stephen-liu74/archive/2012/08/03/2553803.html

MongoDB使用find来进行查询.查询就是返回一个集合中文档的子集,子集合的范围从0个文档到整个集合.
find的第一个参数决定了要返回哪些文档(document的过滤条件).其形式也是一个文档,说明要查询的细节.空的查询文档{}会匹配集合的全部内容.
要是不指定查询文档,默认是{}.如:db.users.find()返回集合中的所有内容.
向查询文档中添加键值对,就意味着添加了查询条件.对绝大多数类型来说,整数匹配整  数,布尔类型匹配布尔类型,字符串匹配字符串.

先添加测试数据

db.Student.insert({name:"jack",sex:1,age:33})
db.Student.insert({name:"jack",sex:1,age:33})
db.Student.insert({name:"lily",sex:0,age:13})
db.Student.insert({name:"kaily",sex:0,age:33})
db.Student.insert({name:"tom",sex:1,age:53})

1、find()/findOne()条件过滤

只获取name等于jack的Student。findOne()则只获取第一条

> use demodb
switched to db demodb
>  db.Student.find({name:"jack"})
{ "_id" : ObjectId("5437383157abafe09d99cbfc"), "name" : "jack", "sex" : 1, "age
" : 33 }
{ "_id" : ObjectId("543738b857abafe09d99cbfd"), "name" : "jack", "sex" : 1, "age
" : 33 }
>  db.Student.findOne({name:"jack"})
{
"_id" : ObjectId("5437383157abafe09d99cbfc"),
"name" : "jack",
"sex" : 1,
"age" : 33
}

2、find()/findOne()指定返回的fileds

说明:find()的第二个参数限制返回的filed的个数,0代表不返回,1代表返回。"_id"键总是会被返回。
如果不带条件,只限制返回的filed个数的话,命令如下:db.Student.find({},{sex:0})。只需要第一个参数为{}空字典就可以。

只获取name等于jack的Student,并且filed为name,age的数据。

> db.Student.find({name:"jack"},{name:1,age:1})
{ "_id" : ObjectId("5437383157abafe09d99cbfc"), "name" : "jack", "age" : 33 }
{ "_id" : ObjectId("543738b857abafe09d99cbfd"), "name" : "jack", "age" : 33 }
> db.Student.find({name:"jack"},{sex:0})
{ "_id" : ObjectId("5437383157abafe09d99cbfc"), "name" : "jack", "age" : 33 }
{ "_id" : ObjectId("543738b857abafe09d99cbfd"), "name" : "jack", "age" : 33 }
>

3、查询条件

"$lt","$lte","$gt","$gte"分别对应<,<=,>,>= 
如下代码:
db.Student.find({age:{$gt:33}}) 查询age大于33的 
db.Student.find({age:{$gte:33}})
db.Student.find({age:{$lt:33}})
db.Student.find({age:{$lte:33}})
db.Student.find({age:{$gt:23,$lt:43}})

> db.Student.find({age:{$gt:33}})
{ "_id" : ObjectId("543738c357abafe09d99cc00"), "name" : "tom", "sex" : 1, "age" : 53 }
> db.Student.find({age:{$gte:33}})
{ "_id" : ObjectId("5437383157abafe09d99cbfc"), "name" : "jack", "sex" : 1, "age" : 33 }
{ "_id" : ObjectId("543738b857abafe09d99cbfd"), "name" : "jack", "sex" : 1, "age" : 33 }
{ "_id" : ObjectId("543738b857abafe09d99cbff"), "name" : "kaily", "sex" : 0, "age" : 33 }
{ "_id" : ObjectId("543738c357abafe09d99cc00"), "name" : "tom", "sex" : 1, "age" : 53 }
> db.Student.find({age:{$lt:33}})
{ "_id" : ObjectId("543738b857abafe09d99cbfe"), "name" : "lily", "sex" : 0, "age" : 13 }
> db.Student.find({age:{$lte:33}})
{ "_id" : ObjectId("5437383157abafe09d99cbfc"), "name" : "jack", "sex" : 1, "age" : 33 }
{ "_id" : ObjectId("543738b857abafe09d99cbfd"), "name" : "jack", "sex" : 1, "age" : 33 }
{ "_id" : ObjectId("543738b857abafe09d99cbfe"), "name" : "lily", "sex" : 0, "age" : 13 }
{ "_id" : ObjectId("543738b857abafe09d99cbff"), "name" : "kaily", "sex" : 0, "age" : 33 }
> db.Student.find({age:{$gt:23,$lt:43}})
{ "_id" : ObjectId("5437383157abafe09d99cbfc"), "name" : "jack", "sex" : 1, "age" : 33 }
{ "_id" : ObjectId("543738b857abafe09d99cbfd"), "name" : "jack", "sex" : 1, "age" : 33 }
{ "_id" : ObjectId("543738b857abafe09d99cbff"), "name" : "kaily", "sex" : 0, "age" : 33 }  

$ne 代表不等于 
db.Student.find({age:{$ne:33}}) 查询age不等于33
$in,$not和$or

db.Student.find({age:{$in:[13,53]}})
db.Student.find(
{
$or:
   [
    {age:{$in:[13,53]}},
    {name:"kaily"}
   ]
}
)  

4、特殊查询--null和exists

null可以匹配自身,而且可以匹配"不存在的"

--插入测试数据
db.Student.insert({name:null,sex:1,age:18})
db.Student.insert({sex:1,age:24})

db.Student.find({name:null})        --上面两条都能查到
db.Student.find({name:{$in:[null],$exists:true}})  ---只能查到第一条

5、数组数据查询

db.Student.insert({name:"wjh",sex:1,age:18,color:["red","blue","black"]})
db.Student.insert({name:"lpj",sex:1,age:22,color:["white","blue","black"]})
db.Student.find()

--color数组中所有包含white的文档都会被检索出来
db.Student.find({color:"white"})
--color数组中所有包含red和blue的文档都会被检索出来,数组中必须同时包含red和blue,但是他们的顺序无关紧要。
db.Student.find({color:{$all:["red","blue"]}})
--精确匹配,即被检索出来的文档,color值中的数组数据必须和查询条件完全匹配,即不能多,也不能少,顺序也必须保持一致。
db.Student.find({color:["red","blue","black"]})
--匹配数组中指定下标元素的值。数组的起始下标是0。注意color要加引号。
db.Student.find({"color.0":"white"})

6、内嵌文档查询

----待完成-------

7、排序

db.Student.find().sort({age:1})
db.Student.find().sort({age:1,sex:1})  

--1代表升序,-1代表降序

8、分页

db.Student.find().sort({age:1}).limit(3).skip(3) 

--limit代表取多少个document,skip代表跳过前多少个document。

9、获取数量

db.Student.count({name:null})
--或者
db.Student.find({name:null}).count()

删除数据

说明:删除数据比较简单。

db.Student.remove({name:null})

更新数据

1.更新数据

命令【db.Student.update({name:"jack"},{age:55})】执行后
先查询name=jack的所有document,然后将name=jack的所有document都替换为{age:55},其它filed都没有了。
正确的更新方式应该为:
db.Student.update({name:"jack"},{$set:{age:55}})

2.增加field

--将name=lily的student增加一个filed height
db.Student.update({name:"lily"},{$inc:{height:175}})

3.upset-将数字field增加多少增量

--若存在则添加,否则更新,只能用于数字field,例如age更新前是50,更新了185,则变为235.
db.Student.update({name:"lily"},{$inc:{age:185}},true)

4.批量更新数据

------------------待完成---------
时间: 2024-10-10 18:14:16

MongoDB学习笔记(二)的相关文章

MongoDB学习笔记二:创建、更新及删除文档

插入并保存文档 对目标集使用insert方法插入一个文档: > db.foo.insert({"bar" : "baz"}) 这个操作会给文档增加一个"_id"键(要是原来没有的话),然后将其保存到MongoDB中.批量插入 如果要插入多个文档,使用批量插入会快一些.批量插入传递一个由文档构成的数组给数据库.如果只是导入数据(例如,从数据feed或者MySQL中导入),可以使用命令行工具,如mongoimport,而不是使用批量插入. 删除

Mongodb学习笔记二(Mongodb基本命令)

一.Mongodb命令 说明:Mongodb命令是区分大小写的,使用的命名规则是驼峰命名法. 对于database和collection无需主动创建,在插入数据时,如果database和collection不存在则会自动创建. 常用命令 help命令通过此命令可以看到一些最基本的命令,如图: use命令例如命令[use demodb],创建demodb,不用担心demodb不会创建,当使用use demodb 命令创建第一个collection时会自动创建数据库demodb,如图: 插入数据使用

MongoDB学习笔记&lt;二&gt;

继续刚才的shell的学习,又继续学了如下知识: --文档数据插入 --文档数据删除 --文档数据更新 具体如下: 1.插入文档 db.person.insert({"name":"xiaoming"}) 2.批量插入 使用for循环来做,比如: for(var i=0;i<10;i++){ db.person.insert({"name":i}) } 3.save操作 和insert操作类似,save操作和insert操作的区别在于:如果

MongoDB 学习笔记二:安装MongoDB

1.下载MongoDB MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:https://www.mongodb.com/download-center#community.注意:在 MongoDB 2.2 版本后已经不再支持 Windows XP 系统.最新版本也已经没有了 32 位系统的安装文件. 2.安装MongoDB 我下载的是mongodb-win32-x86_64-2008plus-ss

MongoDB学习笔记(二)

Mongo命令和配置1.启动项 1 --dbpath 指定数据库的目录 2 --port 端口 默认是27017 3 --fork 以后台守护的方式进行启动 4 --logpath 制定日志文件输出路径 5 --config 指定一个配置文件 6 --auth 以安全的方式启动数据库 7 --rest 会启动一个帮助页面 2.关闭数据库 db.shutdownServer(); 3.导入导出 - 导出 mongoexport -d 指定导出的数据库 -c 制定导出的集合 -o 导出的文件路径 -

MongoDB 学习笔记(二) 之查询

最简单的查询 个人认为mongoDB是面向对象的吧. 例如最简单的查询  整个数据集只有三条数据 第一查询姓名为张三的  数据 查询的条件比较好写 随意   db.collection.find(查询条件)   例如 15 得到的结果是这样 如果你不想返回某个字段呢 ,你可以自己定义返回的字段值 语法这样 db.collection.find({查询条件},{返回字段}) 16 我们看到每次查询 "_id" 这个字段 都返回  我们可以将它设置为0 这样的话就不会返回 如 查询条件里的

MongoDB 学习笔记(二) 高级查询

1.条件运算符 2.$all 匹配所有 3.$exists 判断字段是否存在 4.NUll 值处理 5.$mod 取模处理 6.$ne 不等于 7. $in 包含,与sql用法相同 8. $nin 不包含,与sql用法相同 9.$size 数组个数 10.正则表达式 11.$where 查询 12.javascript 查询 13.Count.skip. limit 14.sort 排序 15.游标 16.存储过程 javascript 写法 MongoDB 学习笔记(二) 高级查询

MongoDB学习笔记一:MongoDB的下载和安装

趁着这几天比较空闲,准备学习一下MongoDB数据库,今天就简单的学习了一些MongoDB的下载和安装,并创建了存储MongoDB的数据仓库.将自己今天学习到的写成博客分享给大家. 一.MongoDB的下载和安装 MongoDB的下载地址为:http://www.mongodb.org/ 1.进入官网的首页后,在首页的右上方单击Downloads连接,如图所示: 2.在页面中可以看到目前最新的版本和以前发布过的版本,这里选择最新版本,windows 32位的进行下载,文件的格式为ZIP格式的,单

Mongodb学习笔记

总结下这几天Mongodb学习笔记 /** * 获取MongoClient * @author xuyw * @email [email protected] * @param host * @param port * @return */ public static MongoClient getMongoClient(String host, int... port) { MongoClient mongoClient = null; int portlen = 0; try { if (p

mongodb学习笔记系列一

一.简介和安装 ./bin/mongod --dbpath /path/to/database --logpath /path/to/log --fork --port 27017 mongodb非常的占磁盘空间, 刚启动后要占3-4G左右,--smallfiles 二.基本命令 1.登录mongodb client /use/local/mongo 2.查看当前数据库 show databases; show dbs; 两个可能 3.admin是和管理有关的库,local 是放schema有关