创建、删除数据库

格式

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操作的更多相关文章

  1. 基础拾遗-----mongoDB操作

    基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...

  2. mongodb操作文件

    mongodb操作文件,主要是通过GridFS类.存储文件主要存放在fs中,其中的fs是数据库默认的.并且GridFS是直接与数据库打交道,与collection集合无关. ============= ...

  3. PHP mongoDB 操作

    <?php /** * PHP操作MongoDB学习笔记 */ //************************* //** 连接MongoDB数据库 **// //************ ...

  4. mongodb操作之使用javaScript实现多表关联查询

    一.数据控制 mongodb操作数据量控制,千万控制好,不要因为操作的数据量过多而导致失败. 演示一下发生此类错误的错误提示:

  5. SpringMVC连接MongoDB操作数据库

    <?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Soft ...

  6. mongoDB操作详细

    简介 它和我们使用的关系型数据库最大的区别就是约束性,可以说文件型数据库几乎不存在约束性,理论上没有主外键约束,没有存储的数据类型约束等等 关系型数据库中有一个 "表" 的概念,有 ...

  7. 02:MongoDB操作

    1.1 MongoDB 增加 1.插入数据 1. 插入文档: insert 如果插入数据的时候,collection还不存在,自动创建集合 2. insertOne: 插入一条数据 3. insert ...

  8. mongodb初始化并使用node.js实现mongodb操作封装

    mongodb的下载只要在https://www.mongodb.com/网站就能够下载 下载后安装只用一直点next就可以,注意最好使用默认路径安装到C盘,然后在任意位置建立一个文件夹用于储存你的数 ...

  9. NodeJS下的Mongodb操作

    今天用Node写一个小程序中需要用到数据库操作,试用了一下,发现官方的驱动已经非常好用了,也支持async. 一个简单的实例如下: const MongoClient = require('mongo ...

随机推荐

  1. 【转载 来自sdnlab】 开放网络没那么简单

    链接:开放网络没那么简单 本文是云杉网络工程师张攀对当前开源网络技术现状的一些思考和探索. 开放网元.释放数据的价值 从2012年开始至今,网络行业明显是O字辈的天下.所有我接触过了解过的组织和项目, ...

  2. DS实验题 Dijkstra算法

    参考:Dijkstra算法 数据结构来到了图论这一章节,网络中的路由算法基本都和图论相关.于是在拿到DS的实验题的时候,决定看下久负盛名的Dijkstra算法. Dijkstra的经典应用是开放最短路 ...

  3. Web 在线文件管理器学习笔记与总结(4)查看文件内容

    ② 查看文件内容 a.通过 file_get_contents($filename) 得到文件内容 b.通过 highlight_string($string) 或者 highlight_file($ ...

  4. 【翻译】西川善司「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,前篇(2)

    Lighting和Shading(2)镜面反射的控制和模拟次级表面散射技术 http://www.4gamer.net/games/216/G021678/20140703095/index_2.ht ...

  5. nor flash和nand flash的区别

    NOR和NAND是现在市场上两种主要的非易失闪存技术.Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面.紧接着,1989年,东芝公司发表了 ...

  6. Overengineering

    https://en.wikipedia.org/wiki/Overengineering Overengineering (or over-engineering) is the designing ...

  7. php 分词 —— PHPAnalysis无组件分词系统

    分词,顾名思义就是把词语分开,从哪里分开?当然是一大堆词语里了,一大堆词语是什么?是废话或者名言.这在数据库搜索时非常有用. 官方网站 http://www.phpbone.com/phpanalys ...

  8. 【转】UnityVS(Visual Studio Tools For Unity)的安装与使用

    Unity 的开发者们,尤其是微软系的Unity开发者们,用Mono是不是烦死了?你是不是跟我一样,用vs来写代码,用Mono来跟踪调试?好麻烦啊好麻烦. 也许你会说,傻逼你不会用UnityVS插件么 ...

  9. jboss4.2.3建立oracle JMS应用

    一.基本配置 1 增加oracle驱动文件,ojdbc6.jar,不能使用小于该版本的jdbc驱动,jboss-4.2.3.GA\server\default\lib 2 增加retrotransla ...

  10. [daily][device][bluetooth] 蓝牙怎么办!(archlinux下驱动蓝牙鼠标,以及三星手机)

    去年地摊买的破无线鼠标坏掉了.看上微软的Designer Mouse蓝牙鼠,但是买之前我要确认我能不能驱起来. 这款鼠标只支持蓝牙4.0.系统支持windows8以上,不支持xp和windows7. ...