数据库基本操作

连接到mongoDBserver 
1
./bin/mongo 127.0.0.1:12345 
查看当前数据库
1
2
3
> show dbs
admin  (empty)
local  0.078G
却换数据库(假设不存在会自己主动创建)
1
2
> use jerome
switched to db jerome
删除数据库
1
2
> db.dropDatabase()
"dropped" "jerome""ok" : 1 }
删除表
1
2
3
4
5
6
7
8
9
10
> > show tables
jerome_collection
jerome_coolection
system.indexes
> db.jerome_collection.drop()
true
> show tables #删除了当前表了
jerome_coolection
system.indexes

写入

1
2
> db.jerome_collection.insert({x:1}) #集合数据的写入,格式为JSON
WriteResult({ "nInserted" : 1 })

查询

1
2
3
4
5
6
7
8
9
10
11
> show dbs
admin   (empty)
jerome  0.078GB
local   0.078GB
> show collections
jerome_collection
system.indexes
> db.jerome_collection.find()
"_id" : ObjectId("556fd29a4e8b96c5ebc42e63"), "x" : 1 }
> db.jerome_collection.find({x:1})    #能够指定參数
"_id" : ObjectId("556fd29a4e8b96c5ebc42e63"), "x" : 1 } #_id是全局字段,在数据库中不会反复
插入多条数据測试limit等
1
2
3
4
5
6
7
8
for(i=3;i<100;i++)db.jerome_collection.insert({x:i}) #能够使用js语法
WriteResult({ "nInserted" : 1 })
> db.jerome_collection.find().count() #查找总条数
99
> db.jerome_collection.find().skip(3).limit(2).sort({x:1}) #跳过前三条。取两条,使用x排序
"_id" : ObjectId("556ff5e8d7e60a53de941a74"), "x" : 4 }
"_id" : ObjectId("556ff5e8d7e60a53de941a75"), "x" : 5 }

更新

1
2
3
4
5
6
7
8
> db.jerome_collection.find({x:1})
"_id" : ObjectId("556fd29a4e8b96c5ebc42e63"), "x" : 1 }
> db.jerome_collection.update({x:1},{x:999}) #两个參数,一个查找的,一个更新的数据。
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.jerome_collection.find({x:1}) #已经找不到了
> db.jerome_collection.find({x:999}) 
"_id" : ObjectId("556fd29a4e8b96c5ebc42e63"), "x" : 999 }
 
部分更新操作符(set )
1
2
3
4
5
6
7
> db.jerome_collection.insert({x:100,y:100,z:100})
WriteResult({ "nInserted" : 1 })
> db.jerome_collection.update({z:100},{$set:{y:99}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.jerome_collection.find({z:100})
"_id" : ObjectId("556ff84a1c99195ded71252e"), "x" : 100, "y" : 99, "z" : 100 }
更新不存在数据时会自己主动创建
1
2
3
4
5
6
7
8
9
10
> db.jerome_collection.find({y:100})
> db.jerome_collection.update({y:100},{y:999},true)
WriteResult({
    "nMatched" : 0,
    "nUpserted" : 1,
    "nModified" : 0,
    "_id" : ObjectId("556ff9556db7cf8009b5edf8")
})
> db.jerome_collection.find({y:999})
"_id" : ObjectId("556ff9556db7cf8009b5edf8"), "y" : 999 }
更新多条数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
for(i=0;i<3;i++)db.jerome_collection.insert({c:2}) #插入三条
WriteResult({ "nInserted" : 1 })
> db.jerome_collection.find({c:2}) 
"_id" : ObjectId("556ffa011c99195ded71252f"), "c" : 2 }
"_id" : ObjectId("556ffa011c99195ded712530"), "c" : 2 }
"_id" : ObjectId("556ffa011c99195ded712531"), "c" : 2 }
> db.jerome_collection.update({c:2},{c:3}) #更新
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.jerome_collection.find({c:2})
"_id" : ObjectId("556ffa011c99195ded712530"), "c" : 2 }
"_id" : ObjectId("556ffa011c99195ded712531"), "c" : 2 }
> db.jerome_collection.find({c:3}) #发现仅仅更新一条,是为了防止误操作
"_id" : ObjectId("556ffa011c99195ded71252f"), "c" : 3 }
> db.jerome_collection.update({c:2},{$set:{c:3}},false,true) #更新多条
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
> db.jerome_collection.find({c:2})
> db.jerome_collection.find({c:3})
"_id" : ObjectId("556ffa011c99195ded71252f"), "c" : 3 }
"_id" : ObjectId("556ffa011c99195ded712530"), "c" : 3 }
"_id" : ObjectId("556ffa011c99195ded712531"), "c" : 3 }

删除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
> db.jerome_collection.find({c:3})
"_id" : ObjectId("556ffa011c99195ded71252f"), "c" : 3 }
"_id" : ObjectId("556ffa011c99195ded712530"), "c" : 3 }
"_id" : ObjectId("556ffa011c99195ded712531"), "c" : 3 }
> db.jerome_collection.remove() #不可用
2015-06-04T00:15:34.444-0700 remove needs a query at src/mongo/shell/collection.js:299
> db.jerome_collection.find({c:3})
"_id" : ObjectId("556ffa011c99195ded71252f"), "c" : 3 }
"_id" : ObjectId("556ffa011c99195ded712530"), "c" : 3 }
"_id" : ObjectId("556ffa011c99195ded712531"), "c" : 3 }
> db.jerome_collection.remove({c:3}) #删除必需要有參数
WriteResult({ "nRemoved" : 3 })
> db.jerome_collection.find({c:3}) #删除成功

索引

        数据较多时。使用索引速度加快查询。

        查看集合索引情况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for(i=0;i<100;i++)db.jerome_collection.insert({x:i}) #加入測试数据
WriteResult({ "nInserted" : 1 })
> db.jerome_collection.getIndexes() #仅仅有一个默认索引
[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "name" "_id_",
        "ns" "jerome.jerome_collection"
    }
]
        创建索引
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
db.jerome_collection.ensureIndex({x:1}) #1代表正向排序,-1代表反向排序
{
    "createdCollectionAutomatically" false,
    "numIndexesBefore" : 1,
    "numIndexesAfter" : 2,
    "ok" : 1
}
> db.jerome_collection.getIndexes()
[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "name" "_id_",
        "ns" "jerome.jerome_collection"
    },
    {
        "v" : 1,
        "key" : {
            "x" : 1
        },
        "name" "x_1",
        "ns" "jerome.jerome_collection"
    }
]
        索引尽管会使写入的数度变慢。可是查询的速度变快了。

MongoDB 基本使用的更多相关文章

  1. 【翻译】MongoDB指南/聚合——聚合管道

    [原文地址]https://docs.mongodb.com/manual/ 聚合 聚合操作处理数据记录并返回计算后的结果.聚合操作将多个文档分组,并能对已分组的数据执行一系列操作而返回单一结果.Mo ...

  2. 【翻译】MongoDB指南/CRUD操作(四)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...

  3. 【翻译】MongoDB指南/CRUD操作(三)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...

  4. 【翻译】MongoDB指南/CRUD操作(二)

    [原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...

  5. 【翻译】MongoDB指南/CRUD操作(一)

    [原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(一) 主要内容:CRUD操作简介,插入文档,查询文档. CRUD操作包括创建.读取.更新和删 ...

  6. CRL快速开发框架系列教程十二(MongoDB支持)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  7. MongoDB系列(二):C#应用

    前言 上一篇文章<MongoDB系列(一):简介及安装>已经介绍了MongoDB以及其在window环境下的安装,这篇文章主要讲讲如何用C#来与MongoDB进行通讯.再次强调一下,我使用 ...

  8. MongoDB系列(一):简介及安装

    什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为应用提供可扩展的高 ...

  9. [原]分享一下我和MongoDB与Redis那些事

    缘起:来自于我在近期一个项目上遇到的问题,在Segmentfault上发表了提问 知识背景: 对不是很熟悉MongoDB和Redis的同学做一下介绍. 1.MongoDB数组查询:MongoDB自带L ...

  10. 用MongoDB分析合肥餐饮业

    看了<从数据角度解析福州美食>后难免心痒,动了要分析合肥餐饮业的念头,因此特地写了Node.js爬虫爬取了合肥的大众点评数据.分析数据库我并没有采用MySQL而是用的MongoDB,是因为 ...

随机推荐

  1. kali(Ubuntu)右键添加idle打开方式

    IDLE可以说是Unix平台下Python的第一个集成开发环境(IDE) 命名行输入idle看idle是否已安装,没有则先安装 安装idle:apt-get install idle 安装完成后,命名 ...

  2. ajax同时提交表单且包含文件

    说明一下:FormData对象是html5的一个对象,目前的一些主流的浏览器都已经兼容.ie8暂时不支持,不支持FormData的,可以使用方法二,下面会介绍.接着说FormData,它是一个html ...

  3. Python: Json串反序列化为自定义类对象

    最近刚接触到python,就想到了如何反序列化json串.网上找了一下,大部分都是用json模块反序列化为python数据结构(字典和列表).如果对json模块不了解的参考菜鸟教程.然后我在此基础上将 ...

  4. [luogu] P2787 语文1(chin1)- 理理思维(分块)

    P2787 语文1(chin1)- 理理思维 题目背景 蒟蒻HansBug在语文考场上,挠了无数次的头,可脑子里还是一片空白. 题目描述 考试开始了,可是蒟蒻HansBug脑中还是一片空白.哦不!准确 ...

  5. TOJ 3517 The longest athletic track

    3517.   The longest athletic track Time Limit: 1.0 Seconds   Memory Limit: 65536KTotal Runs: 880   A ...

  6. STL_算法_Heap算法(堆排)(精)

    C++ Primer 学习中. . . 简单记录下我的学习过程 (代码为主) /***************************************** STL-算法--Heap算法 堆排序 ...

  7. Linux之我最常用的20条命令

    Linux之我最常用的20条命令 玩过 Linux的人都会知道, Linux中的命令的确是非常多,但是玩过 Linux的人也从来不会因为 Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的 ...

  8. hibernate 或jpa 中使用 AliasToBeanResultTransformer 自定义类型转换ResultTransformer 下划线转驼峰

    jpa中使用 sql查询时,返回结果直接转为实体bean的实现, 需要自定义一个ResultTransformer,如下, import java.util.Arrays; import org.ap ...

  9. Pascal Script

    MsgBox http://www.jrsoftware.org/ishelp/index.php?topic=isxfunc_msgbox ExpandConstant http://www.jrs ...

  10. BMP图片格式模型

    BMP BMP(全称Bitmap)是Window操作系统中的标准图像文件格式 可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广. 它采用位映射存储格式,除了图像深度可选以外,不 ...