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 ...
随机推荐
- [转]在VS2010 VC++项目中引用Lib静态库(以Openssl为例)
本文转自:http://kb.cnblogs.com/page/94467/ Openssl是个为网络通信提供安全及数据完整性的一种安全协议,囊括了主要的密码算法.常用的密钥和证书封装管理功能以及SS ...
- 10. 求N分之一序列前N项和
求N分之一序列前N项和 #include <stdio.h> int main() { int i, n; double item, sum; while (scanf("%d& ...
- jquery动态加载问题
对于append的元素,原有的方法不生效 解决:用on方法 找到的:http://www.zhidao91.com/jquery-html-live-on/ 解决使用jQuery采用append添加的 ...
- concurrency parallel 并发 并行
Computer Systems A Programmer's Perspective Second Edition The general phenomenon of multiple flows ...
- php curl流方式远程下载大文件
$url="http://*"; #下载文件 set_time_limit(0); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, ...
- java CyclicBarrier 2
//Listing 6-2. Using a Cyclic Barrier to Decompose a Task into Subtasks import java.util.concurrent. ...
- document.execCommand(”BackgroundImageCache”, false, true)
很多时候我们要给一些按钮或是img设置背景,而为了达到数据与表现样式分离的效果,通常背景样式都是在CSS里设定的,但是这个行为在IE会有一 个Bug,那就是因为 IE默认情况下不缓存背景图片,所以当鼠 ...
- jquery_easyui的使用
一.引入jquery,jquery_easyui,jquery_easyui css,图标css,本地语言 二.通过学习jquery_easyui 手册,用简单的js代码来实现(按钮.表单.表格.弹出 ...
- QObject::deleteLater()并没有将对象立即销毁,而是向主消息循环发送了一个event,下一次主消息循环收到这个event之后才会销毁对象 good
程序编译运行过程很顺利,测试的时候也没发现什么问题.但后来我随手上传了一个1G大小的文件,发现每次文件上传到70%左右的时候程序就崩溃了,小文件就没这个问题.急忙打开任务管理器,这才发现上传文件的时候 ...
- IIS8中部署WCF服务出错:HTTP 错误 404.3 - Not Found
解决方法,以管理员身份进入命令行模式,运行: "%windir%\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ ...