-
Document
-
MongoDB是基于Document作为数据存储。
-
Document在数据形式中表现为BSON格式。为{"key1":value1,"key2":value2} 这种形式。
-
Document中的Key通常是字符串,键中不能含有\0,.,$,_开头 字符
-
Document中的Key区分大小写,并且唯一。
-
-
Collection
-
Collection就是一组Document,Collection\Document类似于关系数据库中数据表和行的关系。
-
通常把相同类型的Document放到一个Document中。这样也方便建立索引
-
集合名称为字符串类型,不能为"",不能含有\0,不能以system.开头(由于系统集合保留着system前缀,例如system.users保存数据库的用户信息,system.namespaces保存着数据库的集合信息),不能包含$字符(由于某些系统生成的集合中包含该字符)。
-
每个Collection都会有一个_id默认字段,默认是ObjectId类型。ObjectId使用12字节存储空间,每个字节两个16进制数。这里直接截《MongoDB权威指南》里的图片,格式如下:
时间戳使用的是本地当前时间;主机唯一标识符(通常是机器主机名的散列值);PID 进程标识符;最后三个保证在同一秒,同一机器,同一进程产生不同的ObjectId。
-
-
Database
-
多个Collection组成一个Database,每个Database多有独立的权限控制,在磁盘上放置在不同的文件。
-
数据库名称为字符串,不能是"",不能含有空格,.,$,/,\,\0 字符,应该全部小写,最多64字节。
-
有些数据库名是保留的 admin root数据库,用户自动继承所有数据库的权限;local 永远不会被赋值,可以用来存储限于本地服务器的数据;config mongo用户分片设置时,保存分片的相关信息。
命名空间:把数据库名字放到集合名前面,就是一个命名空间。要求命名空间长度一般要求小于100字节,例如testdb.school.students
-
-
运行MongoDB Server
-
windows 作为服务每次开机自动启动。
-
创建StartServer.bat 批处理文件。
-
goto start
--directoryperdb 每个DB都会新建一个目录
--logappend 日志追加
--serviceName "MongoDB" -install 注册成windows服务
warning: set赋值=中间不要有空格
:start
:@echo off
set dbpath="H:\MongoDB\Server\3.2\data\db"
set logpath="H:\MongoDB\Server\3.2\data\log\mongo.log"
.\bin\mongod --logpath %logpath% --logappend --dbpath %dbpath% --directoryperdb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install
-
管理员权限运行。
-
linux 编写类似shell文件,运行
-
MongDB默认监听27017端口,可以通过http://localhost:27017查看mongodb是否开启
-
-
Mongo shell
-
CURD:
-
db.createCollection('collection_name'); 创建Collection
-
db.collection_name.insert({BSON格式数据});//这里的BSON格式数据可以内嵌Document结构
-
db.collection_name.update({"student_name":"xiaoming"},{$set:{"age":"12"}},false,true);
db.collection_name.update( criteria, objNew, upsert, multi )
criteria : update的查询条件,类似sql update查询内where后面的
objNew : update的对象和一些更新的操作符(如$set,$inc,$push,$addToSet...)等,也可以理解为sql update查询内set后面的
upsert : 如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。 -
这里还可以尝试$ne/$push , $addToSet/$each , 这里addToSet可以避免插入数组重复,each可以插入多个。ne/push 主要用在插入对象是Document上面。addToSet/each 可以方便的在数组中追加数据。
-
db.collection_name.find({查询条件}).[limit(number) 限制最多number条数据,skip(number) 跳过最开始钱的number条数据 ,count() 统计数量,sort({"sortelement":1 升序 -1 降序})];
-
db.collection_name.findOne(); 查询第一条数据
-
关于查询条件:== "key":"value"; > gt; < lt; >= gte; <= lte; != ne; 例如 db.collection_name.find({'age':{$gt:14,$lt:24}});选择>14 <24的Documents ;
查询字符串条件可以为正则,例如db.collection_name.find({'name':/^l/}); 查询名字l开头的数据,正则不要加''、""。
关于或条件:db.collection_name.find({$or:[{'age':{$lt:10}},{'age':{$gt:60}}]});
关于获取指定列:db.collection_name.find({$or:[{'age':{$lt:10}},{'age':{$gt:60}}]},{'name':true});
-
db.collection_name.remove({删除条件}) //删除Document
-
db.collection_name.drop(); //删除Collection
-
db.dropDatabase(); //删除数据库
-
-
Others
-
show dbs;
-
show collections;
-
use db_name;
-
db.collection_name.renameCollection("new_collection_name");
-
db //显示db变量值,也就是当前指向的数据库。
-
help 查看更多命令
-
-
这里Mongo shell用的JavaScript解析器,可以运行任何JavaScript程序,和JavaScript标准库。
-
-
提供一本非常好的入门书《MongoDB权威指南》
MongoDB入门
最新推荐文章于 2024-05-27 21:08:02 发布