mongodb介绍及基本操作

一、Mongodb简介

1-功能特性

MongoDB 的设计目标是高性能可扩展易部署易使用,存储数据非常方便。

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

(2)模式自由,采用无模式结构存储。在MongoDB 中集合中存储的数据是无模式的文档,采用无模式存储数据是集合区别于RDBMS 中的表的一个重要特征。

(3)支持完全索引,可以在任意属性上建立索引。

(4)支持查询,MongoDB 支持丰富的查询操作,MongoDB 几乎支持SQL中的大部分查询。

(5)支持复制和数据恢复,MongoDB 支持主从复制机制,可以实现数据备份、故障恢复、读扩展等功能。而基于副本集的复制机制提供了自动故障恢复的功能,确保了集群数据不会丢失。

(6)使用高效的二进制数据存储,包括大型对象(如视频)。使用二进制格式存储,可以保存任何类型的数据对象。

(7)支持Perl、PHP、Java、C#、JavaScript、Ruby、C 和C++ 语言的驱动程序,MongoDB 提供了当前所有主流开发语言的数据库驱动包,开发人员使用任何一种主流开发语言都可以轻松编程,实现访问MongoDB 数据库。

(8)文件存储格式为BSON(JSON 的一种扩展)。BSON 是对二进制格式的JSON 的简称,BSON 支持文档和数组的嵌套。

(9)可以通过网络访问。可以通过网络**远程访问**MongoDB 数据库。

2-介于关系型与非关系型之间的数据库

由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

3-BSON(Binary Serialized Document Format,mongodb存储类型)

它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。

eg.

BSON常用类型符

Type Number Alias
Double 1 “doubles”
字符串 2 “string”
对象 3 “object”
数组 4 “array”
二进制数据 5 “binData”
ObjectId 7 “objectId”
Boolean 8 “bool”
日期 9 “date”
10 “null”
正则表达式 11 “regex”
JavaScript 13 “javascript”
32位整数 16 “int”
时间戳 17 “timestamp”
64位整数 18 “long”
Decimal128 19 “decimal”
Min key -1 “minkey”
Max key 127 “maxkey”

4-SQL映射

SQL 术语概念 MongoDB 术语/概念
数据库 database
collection(连接)
document(文档)
field(域)
索引 index
表连接 内嵌文档和链接
主键 primary key(自动默认为 _id)

5-可视化操作软件推荐:MongoChef

操作界面展示

数据

数据库链接页面

mongodb介绍及基本操作

项目url配置文件

DB_CONFIG_URI=mongodb://mongodb://user:123gogogo@120.27.52.242:27758/homesite-dev

URL配置1

2.插入文档

db.collection.insertOne({obj});

db.collection.insertMany({obj});

db.collection.insert(update,opations)

主键_id将被自动创建
当主键”_id”不存在时,都是添加一个新的文档,但主健”_id”存在时,就有些不同了

insert:当主键”_id”在集合中存在时,不做任何处理。

save:当主键”_id”在集合中存在时,进行更新。

opations中,ordered:true 有序插入,

3.查询文档

db.collection.find( , )

参数一为查询条件,参数二为返回的字段。

查询语句db.users.find( { status: “A” }, { name: 1, status: 1, _id: 0 } )返回结果如下:

name:1,status:1 意为查询返回值中包含name字段与status字段; _id: 0 意为不返回_id的值

db.users.find( { name: null } ) 意为返回name为空或者不存在name字段的所有文档(数据)。

db.users.find( { name : { $exists: false } } ) 意为查询没有包含条目的字段

db.users.find( { name : { $type: 10 } } ) 意为查询所有字段是null的文档

db.users.find( { status: “A”, age: { $lt: 30 } } ) 查询所有status值为A且age小于30文档

db.users.find( { favorites: { artist: “Picasso”, food: “pizza” } } ) 嵌套查询,查询结果如下

4.更新替换

db.collection.updateMany(filter, update, options)
使用updateMany一次更新多条数据。

db.collection.updateOne(filter, update, options)
使用updateOne一次更新一条数据。

db.collection.update(filter, update, options)
使用updateOne更新数据。

filter:筛选出被过滤的文档

update:更新的数据

options:设定替换的一些设置(如:upsert:true 查询不到文档时创建新的文档、multi:true 更新符合条件的多个文档…)

5.删除文档

db.collection.remove(query,options)

query:删除文档的条件,为空时清空collection(表/链接)

eg.
db.products.remove( { qty: { $gt: 20 } } )(删除所有qty大于20的文档记录)
options: 参数示例 justOne:true 只删除匹配到的第一条数据

db.products.remove( { qty: { $gt: 20 } }, true ) 删除所有qty大于20的文档记录的第一条

> ## END

来源:Steven–Lee

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年3月23日
下一篇 2017年3月23日

相关推荐