MongoDB操作
创建、删除数据库
格式
use DATABASE_NAME
如果不存在,则创建,否则直接切换到该数据库
显示当前所在的数据库
db
显示所有数据库
show dbs
删除数据库
db.dropDatabase()
例子
> show dbs
admin .078GB
db_log .953GB
local .078GB
test .078GB
> use del_db
switched to db del_db
> db.col.insert({x:})
WriteResult({ "nInserted" : })
> show dbs
admin .078GB
db_log .953GB
del_db .078GB
local .078GB
test .078GB
> db
del_db
> db.dropDatabase()
{ "dropped" : "del_db", "ok" : }
插入文档
文档的数据结构和json基本一致
所有存储在集合中都是BSON格式
BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON
>db.col.insert({title: 'MongoDB 教程',
    description: 'MongoDB 是一个 Nosql 数据库',
    by: '菜鸟教程',
    url: 'http://www.runoob.com',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes:
})
删除文档
语法
db.collection.remove(
<query>,
<justOne>
)
- query :(可选)删除的文档的条件。
 - justOne : (可选)如果设为 true 或 1,则只删除一个文档。
 
对比
- 删除集合中的所有文档(保留集合):db.col.remove({})
 - 删除集合:db.col.drop()
 
案例
> db.col.find()
{ "_id" : ObjectId("56c55cf5ca446fab71e4c382"), "x" : }
{ "_id" : ObjectId("56c55cf6ca446fab71e4c383"), "x" : }
{ "_id" : ObjectId("56c55cffca446fab71e4c384"), "x" : } > db.col.remove({x:}, )
WriteResult({ "nRemoved" : })
> db.col.find()
{ "_id" : ObjectId("56c55cf6ca446fab71e4c383"), "x" : }
{ "_id" : ObjectId("56c55cffca446fab71e4c384"), "x" : } > db.col.remove({x:})
WriteResult({ "nRemoved" : })
> db.col.find()
查询文档
读取格式:db.COL_NAME.find()
以易读的方式读取:db.COL_NAME.find().pretty()
只读一个文档:db.COL_NAME.findOne()
AND条件
db.col.find({key1:value1, key2:value2})
OR条件
db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
)
条件查询

案例:
x>1 & (y=3 or y = 4)
db.col.find(
{
x:{$gt:},
$or:[
{y:},{y:}
]
}
)
$type操作符
$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果

示例
> db.col.find()
{ "_id" : ObjectId("56c562c1ca446fab71e4c387"), "x" : , "y" : }
{ "_id" : ObjectId("56c562c8ca446fab71e4c388"), "x" : , "y" : }
{ "_id" : ObjectId("56c568a8b708aa3d13c61cc6"), "x" : "aaa" }
> db.col.find({x:{$type:}})
{ "_id" : ObjectId("56c568a8b708aa3d13c61cc6"), "x" : "aaa" }
> db.col.find({x:{$type:}})
{ "_id" : ObjectId("56c562c1ca446fab71e4c387"), "x" : , "y" : }
{ "_id" : ObjectId("56c562c8ca446fab71e4c388"), "x" : , "y" : }
limit(n)与skip(n)方法
limit显示前n条文档
skip调到第n条文档开始显示
示例
> db.col.find()
{ "_id" : ObjectId("56c562c1ca446fab71e4c387"), "x" : , "y" : }
{ "_id" : ObjectId("56c562c8ca446fab71e4c388"), "x" : , "y" : }
{ "_id" : ObjectId("56c568a8b708aa3d13c61cc6"), "x" : "aaa" } > db.col.find().limit()
{ "_id" : ObjectId("56c562c1ca446fab71e4c387"), "x" : , "y" : }
{ "_id" : ObjectId("56c562c8ca446fab71e4c388"), "x" : , "y" : } > db.col.find().skip()
{ "_id" : ObjectId("56c562c8ca446fab71e4c388"), "x" : , "y" : }
{ "_id" : ObjectId("56c568a8b708aa3d13c61cc6"), "x" : "aaa" } > db.col.find().skip().limit()
{ "_id" : ObjectId("56c562c8ca446fab71e4c388"), "x" : , "y" : }
排序
格式:
db.COL_NAME.find().sort({KEY:})
KEY对应的值:1(升序),-1(降序)
示例:
> db.col.find()
{ "_id" : ObjectId("56c56dd4ca446fab71e4c38a"), "x" : , "y" : }
{ "_id" : ObjectId("56c572c2ca446fab71e4c38b"), "x" : , "y" : }
{ "_id" : ObjectId("56c572c8ca446fab71e4c38c"), "x" : , "y" : } > db.col.find().sort({x:})
{ "_id" : ObjectId("56c56dd4ca446fab71e4c38a"), "x" : , "y" : }
{ "_id" : ObjectId("56c572c2ca446fab71e4c38b"), "x" : , "y" : }
{ "_id" : ObjectId("56c572c8ca446fab71e4c38c"), "x" : , "y" : } > db.col.find().sort({x:-})
{ "_id" : ObjectId("56c572c8ca446fab71e4c38c"), "x" : , "y" : }
{ "_id" : ObjectId("56c572c2ca446fab71e4c38b"), "x" : , "y" : }
{ "_id" : ObjectId("56c56dd4ca446fab71e4c38a"), "x" : , "y" : }
索引
如果没有索引,MongoDB读取文件时,首先扫描整个文件从中找到符合条件的记录。查询效率巨低!
索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构
语法格式
db.COLLECTION_NAME.ensureIndex({KEY:})
KEY值是要创建的索引字段,1为指定按升序建索引,-1是指定按降序建索引。
> db.col.ensureIndex({y:})
{
    "createdCollectionAutomatically" : false,
    "numIndexesBefore" : ,
    "numIndexesAfter" : ,
    "ok" :
}
聚合
聚合主要用来处理数据(如平均值、求和等),并返回计算后的数据结果
语法格式
db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
复制
mongodb各个节点常见的搭配方式为:一主一从、一主多从。
主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。
原理

副本集特征
- N 个节点的集群
 - 任何节点可作为主节点
 - 所有写入操作都在主节点上
 - 自动故障转移
 - 自动恢复
 
MongoDB操作的更多相关文章
- 基础拾遗-----mongoDB操作
		
基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...
 - mongodb操作文件
		
mongodb操作文件,主要是通过GridFS类.存储文件主要存放在fs中,其中的fs是数据库默认的.并且GridFS是直接与数据库打交道,与collection集合无关. ============= ...
 - PHP mongoDB 操作
		
<?php /** * PHP操作MongoDB学习笔记 */ //************************* //** 连接MongoDB数据库 **// //************ ...
 - mongodb操作之使用javaScript实现多表关联查询
		
一.数据控制 mongodb操作数据量控制,千万控制好,不要因为操作的数据量过多而导致失败. 演示一下发生此类错误的错误提示:
 - SpringMVC连接MongoDB操作数据库
		
<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Soft ...
 - mongoDB操作详细
		
简介 它和我们使用的关系型数据库最大的区别就是约束性,可以说文件型数据库几乎不存在约束性,理论上没有主外键约束,没有存储的数据类型约束等等 关系型数据库中有一个 "表" 的概念,有 ...
 - 02:MongoDB操作
		
1.1 MongoDB 增加 1.插入数据 1. 插入文档: insert 如果插入数据的时候,collection还不存在,自动创建集合 2. insertOne: 插入一条数据 3. insert ...
 - mongodb初始化并使用node.js实现mongodb操作封装
		
mongodb的下载只要在https://www.mongodb.com/网站就能够下载 下载后安装只用一直点next就可以,注意最好使用默认路径安装到C盘,然后在任意位置建立一个文件夹用于储存你的数 ...
 - NodeJS下的Mongodb操作
		
今天用Node写一个小程序中需要用到数据库操作,试用了一下,发现官方的驱动已经非常好用了,也支持async. 一个简单的实例如下: const MongoClient = require('mongo ...
 
随机推荐
- JavaScript编码规范[百度]
			
JavaScript编码规范 1 前言 2 代码风格 2.1 文件 2.2 结构 2.2.1 缩进 2.2.2 空格 2.2.3 换行 2.2.4 语句 2.3 命名 ...
 - [学习笔记]RAID及实验
			
RAID: RAID 0 好比只用左手拿了一摞大饼放在那里,相比于只拿一张饼吃,吃的速度会加快.但是万一掉了,就没有了. RAID 1 好比左右手两手一边一个大饼,怎么样都有的吃.但是一只手掉了,还有 ...
 - Data Plane Development Kit (DPDK): Getting Started
			
参考:dpdk getting started 系统: Ubuntu 14.04 内核信息: 执行 uname -a Linux chen-VirtualBox 3.13.0-32-generic # ...
 - mysql没有delete操作,那是delete from操作,
			
1.mysql没有delete操作,那是delete from操作, 2.DELETE FROM table_name [WHERE Clause]
 - mysql数据库‘复制’的办法
			
mysql数据库‘复制’的办法 2006-01-17 10:36:00 标签:Mysql SQL 数据库 休闲 职场 >mysqldump wap -u root -ppassword --ad ...
 - ExtJS笔记5 Components
			
参考 :http://blog.csdn.net/zhangxin09/article/details/6914882 An Ext JS application's UI is made up of ...
 - Latex使用
			
tex是一种文本格式化程序语言,通过使用各种命令,对文本进行排版定义,最后通过编译,生成美观的排版完毕的文档. 同html.css的组合很想,定义元素以及元素的显示属性,按照编写好的文本格式化内容,在 ...
 - 如何删除docker images/containers
			
docker images往往不知不觉就占满了硬盘空间,为了清理冗余的image,可采用以下方法: 1.进入root权限 sudo su 2.停止所有的container,这样才能够删除其中的imag ...
 - The insertion sort algorithm expressed in pseudocode  - 插入排序
			
Computer Science An Overview _J. Glenn Brookshear _11th Edition procedure Sort (List) N ← 2; while ( ...
 - mysql查询昨天本周上周上月
			
昨天 $yestoday = date("Y-m-d 00:00:00",strtotime('-1day'));$today = date("Y-m-d 00:00:0 ...