您的位置:首页 > 数据库 > Mongodb

MongoDB数据库 基础知识

2015-08-31 14:32 495 查看


1.简介:

MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。


2.特点:

它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:

面向集合存储,易存储对象类型的数据。

模式自由,支持动态查询,支持完全索引,包含内部对象。支持查询。支持复制和故障恢复。使用高效的二进制数据存储,包括大型对象(如视频等)。自动处理碎片,以支持云计算层次的扩展性。支持RUBY,PYTHON,J***A,C++,PHP,C#等多种语言。文件存储格式为BSON(一种JSON的扩展)。可通过网络访问。

具体介绍可以查看百度百科:

http://baike.baidu.com/subview/3385614/9338179.htm#viewPageContent


3.使用:

(1)安装:下载地址:https://www.mongodb.org/downloads,下载适合自己的开发环境的压缩包,加压后直接安装就可以了,很简单;

(2)创建仓库、日志、新建服务:在安装目录下创建两个文件夹db、log;在cmd中输入以下命令创建仓库、日志、新建服务:

mongod -dbpath “D:\study soft\MongoDB\db” -logpath “D:\study soft\MongoDB\log\mongodb.log” -install -serviceName “MongoDB”

(3)使用mongoVUE工具:

下载安装(不做介绍了)后,要创建连接,一般只需要写Name(连接名)和Server(地址:localhost或127.0.0.1)就好了:




创建好后如图:



(4)基本命令:

—–创建集合:

db.createCollection(“集合名”);

—– 删除集合:

db.集合名.drop();

—– 切换集合:

use 集合名;

—– 添加记录:

db.集合名.insert({“_id”:1001,”name”:”yyy”,”sex”:”F”});

—–向集合中添加多条记录

db.集合名.insert([{“_id”:1003,”name”:”天ss天”,”sex”:”男”},{“_id”:1004,”name”:”tt”,”sex”:”男”}]);

—– 查看集合中的数据:
<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">    db.集合名<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.find</span>()
    db.集合名<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.findOne</span>()
    db.集合名<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.find</span>({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1001</span>})      ---where key=val
    db.集合名<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.find</span>({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"gt"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1001</span>}})     ---where key>val
    db.集合名<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.find</span>({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"$lte"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1001</span>}})     ---where key<=val
    db.集合名<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.find</span>({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"$ne"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1001</span>}})     ---where key!=val</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li></ul>


—- $in 在…..中
<code class="hljs bash has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">    db.集合名  .find({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$in</span>"</span>:[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1001</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1002</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1003</span>]}})</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>


—- $or 或
<code class="hljs bash has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">     db.集合名.find({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$or</span>"</span>:[{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1001</span>},{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"name"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"haha"</span>}]})</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>


—-$and and or 并且….或…..(性别为男 并且 id为1009 或者姓名为 yc)
<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">    db<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.zy</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.find</span>({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"sex"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"男"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"$or"</span>:[{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1009</span>},{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"name"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"yc"</span>}]})</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>


—– 如果存在则修改,不存在则添加

db.集合名.save({“_id”:1003,”name”:”haha”});

—– 修改

db.集合名.update({条件},{要修改的数据});

—— 修改器

$inc 增加对应的值
<code class="hljs sql has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">    db.zy.<span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">insert</span>({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1004</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"url"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"www.baidu.com"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pageViews"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>});</span>
    db.zy.<span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">update</span>({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1004</span>},{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"$inc"</span>:{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pageViews"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}});</span>        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--将id为1004的文档中的pageViews键的值增加1</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>


$set 修改对应的值
<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">     db<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.zy</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.update</span>({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1002</span>},{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"name"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"明明"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"sex"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"女"</span>})
     db<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.zy</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.update</span>({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1002</span>},{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"$set"</span>:{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"name"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"明明"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"sex"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"男"</span>}})</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>


—- 将company变成一个数组
<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">    db<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.zy</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.insert</span>({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1005</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"company"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"yc"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"url"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"www.baidu.com"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pageViews"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>})<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
    db<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.zy</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.update</span>({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1005</span>},{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"$set"</span>:{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"company"</span>:[<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"yc"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"zy"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"nh"</span>]}})</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>


—删除键:
<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">    db<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.zy</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.update</span>({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1005</span>},{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"$unset"</span>:{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"company"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}})</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>


—数组修改器:

$push 向数组中添加值,可能会出现重复的值
<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">     db<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.zy</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.update</span>({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1005</span>},{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"$push"</span>:{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"company"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"hhh"</span>}})</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>


$each 循环添加
<code class="hljs bash has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">    db.zy.update({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1005</span>},{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$push</span>"</span>:{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"company"</span>:{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$each</span>"</span>:[<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"aa"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"bb"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"cc"</span>]}}})</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>


$slice 指定最大的长度,它的值必须是负数,表示保留最后的n个值
<code class="hljs bash has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">    db.zy.update({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1005</span>},{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$push</span>"</span>:{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"company"</span>:{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$each</span>"</span>:[<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"aa1"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"bb2"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"cc3"</span>],<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$slice</span>"</span>:-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">10</span>}}})</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>


$pop 从数组中删除一个元素 key : 1 从数据末尾开始删 key : -1 从头部开始删
<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">     db<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.zy</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.update</span>({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1005</span>},{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"$pop"</span>:{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"company"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}})</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>


$pull 从数组中删除匹配的值
<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">     db<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.zy</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.update</span>({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1005</span>},{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"$pull"</span>:{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"company"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"nh"</span>}})</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>


—-循环
<code class="hljs ruby has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span>( i=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;i<<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">10</span>;i++){
        db.zy.insert({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:i</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"name"</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:i</span>})
    }  </code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>


注:当不插入_id时,mongodb会自动分配一个ObjectId

—-游标
<code class="hljs php has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">var</span> cursor =db.zy.find();
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">var</span> obj;
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">while</span>(cursor .hasNext()){
        obj=cursor.next();
        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span>(obj);
    };
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">var</span> cursor =db.zy.find();
    cursor .<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">forEach</span>(<span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">function</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(x)</span>{</span>
        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span>(x);
    })</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li></ul>


–分页查询
<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"> db<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.zy</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.find</span>()<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.limit</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;  ---查前3条</span>
 db<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.zy</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.find</span>()<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.limit</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.skip</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;  ---跳过前3条,查后面的3条</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>


–排序
<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">    db<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.zy</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.find</span>()<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.sort</span>({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>})       ---    <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>为升序   -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> 为降序
    db<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.zy</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.find</span>()<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.sort</span>({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"name"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>})   ---第一个相同就按第二个排序</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>


eg:
<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">    db<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.zy</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.insert</span>({
        <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1006</span>,
        <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"content"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"今天天气怎么样??"</span>,
        <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"comments"</span>:[
            {<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"comment"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"好"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"count"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>},
            {<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"comment"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"很好"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"count"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>},
            {<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"comment"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"非常好"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"count"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>},
        ]
    })</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li></ul>


—-通过数组下标访问
<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"> db<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.zy</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.update</span>({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1006</span>},{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"$inc"</span>:{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"comments.1.count"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}})
 db<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.zy</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.update</span>({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"comments.comment"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"很好"</span>},{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"$inc"</span>:{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"comments.$.count"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}})  ----匹配所有的“很好”,让其对应的count+<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>
 db<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.zy</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.update</span>({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"comments.comment"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"非常好"</span>},{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"$set"</span>:{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"comments.$.comment"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"超级好"</span>}})  ----匹配所有的“非常好”,让其对应的值变为超级好</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>


—-MongoDB默认每次修改只修改一个文档,如果需要改多条满足的记录,需要在后面添加条件{multi:true}
<code class="hljs bash has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"> db.zy.update({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"comments.comment"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"很好"</span>},{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$inc</span>"</span>:{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"comments.$.count"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}},{multi:<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">true</span>})
 db.zy.update({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"comments.comment"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"很好"</span>},{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$inc</span>"</span>:{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"comments.$.count"</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}},<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">false</span>,<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">true</span>)</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>


(5).数据类型:

null:{“x”:null}

boolean: {“x”:true}

数值: {“x”:3.14} {“x”:3} NumberInt(“3”) NumberLong(“3”)

字符串:{“x”:”hello”}

日期:{“x”:new Date()}

正则表达式:{“x”:/hello/ig}

数组:{“x”:[1,2,3]}

内嵌文档:{“x”:{“foo”:{bar}}}

对象id: {“x”:ObjectId()}

代码:{“x”:function(){} }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: