MongoDB菜鸟入门(一):概念与增删改查、建立索引

xiaoxiao2021-02-28  112

一、启动

指定–dbpath为存储文件夹,使用默认端口启动

mongod.exe --dbpath c:\data\db

二、windows添加服务

若要把mongodb设定为windows服务

mongod.exe --bind_ip yourIPadress --logpath "C:\data\dbConf\mongodb.log" --logappend --dbpath "C:\data\db" --port yourPortNumber --serviceName "YourServiceName" --serviceDisplayName "YourServiceName" --install –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 //创建数据库并选择连接到一个指定的数据库(只有插入第一条记录后执行show dbs才显示) use testDB //删除当前选择的数据库 db.dropDatabase()

四、操作集合

//显示当前库下的所有集合 show collections db.collections() //创建capped 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})

使用条件gtgte(大于等于)、 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 数据库' });
转载请注明原文地址: https://www.6miu.com/read-19597.html

最新回复(0)