一、启动
指定–dbpath为存储文件夹,使用默认端口启动
mongod.exe --dbpath c:
\data\db
二、windows添加服务
若要把mongodb设定为windows服务
. -- -- . -- -- -- -- -- --
–bind_ip:绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP–logpath:定MongoDB日志文件,注意是指定文件不是目录–logappend:使用追加的方式写日志–dbpath:指定数据库路径–port:指定服务端口号,默认端口27017–serviceName:指定服务名称–serviceDisplayName:指定服务名称,有多个mongodb服务时执行。–install:指定作为一个Windows服务安装。
概念
database:数据库collection:数据库表/集合document:数据记录行/文档field:数据字段/域index:索引primary key:主键,MongoDB自动将_id字段设置为主键ps:表连接,MongoDB不支持
文档:MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型。意思为:同样一个字段可以存入字符串、数值等…,而同一个集合(表),每条文档(记录)的域(字段)可以数量不等。
集合:集合就是 MongoDB 文档组,集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。当第一个文档插入时,集合就会被创建。
三、操作数据库
db
show dbs
use testDB
db.dropDatabase()
四、操作集合
show collections
db.collections()
db.createCollection(
"myco", {capped:
true, size:
10000})
db.tb.
drop()
五、插入文档
db
.runoob.insert({
"x":
10})
//插入单条
db
.runoob.insertOne({
"x":
10})
//插入多条
db
.runoob.insertMany([{
"x":
10},{
"x":
11}])
插入文档你也可以使用 db.col.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。
六、删除文档
//删除所有
db
.tb_a
.remove({
"title":
"x"})
//删除单条
db
.tb_a
.remove({
"title":
"hello"},{justOne:true})
db
.tb_a
.remove({
"title":
"hello"},
1)
query :(可选)删除的文档的条件。justOne : (可选)如果设为 true 或 1,则只删除一个文档。writeConcern :(可选)抛出异常的级别。
七、更新文档
//把集合tb_a的条件符合title="hihi"的文档的content域设置为aaaa
db.tb_a.
update({"title":"hihi"},{$set:{"content":"aaaa"}})
//当条件中文档不存在的时候插入一条
db.tb_a.update({"title":"x"},{$set:{"content":"aaaaaaaaaaaaaaaaa"}},{upsert:true});
db.tb_a.
update({"title":"x"},{$set:{"content":"aaaaaaaaaaaaaaaaa"}},true,false);
//当条件中文档存在多条的时候更新多条
db.tb_a.
update({"title":"hi"},{$set:{"content":"abcdefg"}},{multi:true});
db.tb_a.
update({"title":"hi"},{$set:{"content":"abcdefg"}},false,true);
query : update的查询条件,类似sql update查询内where后面的。update : update的对象和一些更新的操作符(如
,
inc…)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。
八、查找文档
//查看tb_a集合所有文档
db
.tb_a
.find()
//根据条件查找
db
.tb_a
.find({
"title":
"hello"})
//根据条件查找,文档化(json)查看
db
.tb_a
.find({
"title":
"hello"})
.pretty()
//根据条件查找,返回一条
db
.tb_a
.findOne({
"title":
"hello"})
//使用limit限制返回文档条数
db
.tb_b
.find()
.pretty()
.limit(
2)
//使用skip跳过文档条数,注:skip()方法默认参数为
0 。
db
.tb_b
.find()
.pretty()
.limit(
2)
.skip(
2)
//使用sort排序,
1升序,-
1降序
db
.tb_b
.find()
.pretty()
.sort({
"content":
1})
使用条件gt(大于)、gte(大于等于)、
lt(小于)、
lte(小于等于)、$ne(不等于)查找
//大于
5
db
.tb_b
.find({
"content":{$gt:
5}})
.pretty()
//大于等于
5
db
.tb_b
.find({
"content":{$gte:
5}})
.pretty()
//小于
5
db
.tb_b
.find({
"content":{$lt:
5}})
.pretty()
//小于等于
5
db
.tb_b
.find({
"content":{$lte:
5}})
.pretty()
//不等于
5
db
.tb_b
.find({
"content":{$nt:
5}})
.pretty()
AND条件
db
.tb_b
.find({
"content":
5,
"title":
"hi"})
.pretty()
OR条件
db
.tb_b
.find({$
or:[{
"content":
1},{
"content":
9}]})
.pretty()
AND+OR组合条件
db
.tb_b
.find({
"title":
"hello",$
or:[{
"content":
5},{
"content":
9}]})
.pretty()
类型匹配$type 类型列表可查看http://www.runoob.com/mongodb/mongodb-operators-type.html
db.tb_b.find({
"content":{$
type:2}}).pretty() 九、创建索引
1为升序、-1为降序
//单字段
db
.col.ensureIndex({
"title":
1})
//多字段
db
.col.ensureIndex({
"title":
1,
"content":-
1})
//在后台执行创建索引工作
db
.values.ensureIndex({
"title":
1,
"content":-
1}, {background: true})
十、将数据定义为一个变量
该变量可以直接被使用插入
document=({
title:
'MongoDB',
content:
'MongoDB 是一个 Nosql 数据库'
});