mongodb增删改查

1.创建一个mongo数据量
use test;
如果有这个数据库那么会连接到数据库上,如果没有这个数据库则会创建一个这个名称的数据库.
但是如果数据库中没有数据的话那么就不会显示数据库名称.
2.查看数据库
show dbs;
查看当前有哪些数据库,如果数据库中有内容就显示.没有内容就不显示数据库名称.
3.查看数据库中的表(mongo中貌似不叫表.)
use test;
show tables;
4.创建一个数据集合
db.createCollection("集合名称");
例如:
use test;		#进入到数据库中
db.createCollection("kkk");		#创建一个名叫kkk的数据集合
show tables;		#查看创建好的集合
5.想集合中插入数据
use test;
db.kkk.insert({"asdas":"asdafasf"})
如果集合不存在,在进行数据插入的时候会自动创建.例如下面是插入多条数据
db.test_gengxin.insert( [
{"name":"abc","age":"26","status":"zxc"},
{"name":"dec","age":"20","status":"qwe"},
{"name":"asd","age":"31","status":"nmn"},
] )
6.查看已经插入的数据
db.kkk.find()
7.删除集合
db.kkk.drop()
show tables;
或者使用
show collections;
8.可以将某个数值定义成一个变量.然后在进行数据插入的时候直接调用即可.
document=({title: 'MongoDB 教程',
    description: 'MongoDB 是一个 Nosql 数据库',
    by: '菜鸟教程',
    url: 'http://www.runoob.com',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
});
显示结果如下
{
        "title" : "MongoDB 教程",
        "description" : "MongoDB 是一个 Nosql 数据库",
        "by" : "菜鸟教程",
        "url" : "http://www.runoob.com",
        "tags" : [
                "mongodb",
                "database",
                "NoSQL"
        ],
        "likes" : 100
}
变量定义数据插入:
db.col.insert(document)
 
9.更新文档
使用update()更新文档内容.
db.col.update({"原文档的原有字段":"源文档的对应字段的值."},{$set:{"新替换后的字段":"新替换后的值"}})
db.col.update({"title":"MongoDB"},{$set:{"title":"大魔王"}})
如果不加$set的话更新的时候会将所有字段都更新成需要的一个或者多个字段.是一个覆盖的概念.
如果这个更新的值在mongo中有重复的多条.那么会从上到下一次更新.每执行一次更新一条.
使用pretty()查看每个字段对应的值.每行单独显示.
> db.col.find().pretty()
{
        "_id" : ObjectId("56064f89ade2f21f36b03136"),
        "title" : "MongoDB",
        "description" : "MongoDB 是一个 Nosql 数据库",
        "by" : "菜鸟教程",
        "url" : "http://www.runoob.com",
        "tags" : [
                "mongodb",
                "database",
                "NoSQL"
        ],
        "likes" : 100
}
 
如果文档中有若干条相同的文档.那么要一次性全部更新的话就需要添加multi:true参数
db.col.update({"title":"大魔王"},{$set:{"title":"批量更改数据"}},{multi:true})
查看结果如下
 db.col.update({"title":"大魔王"},{$set:{"title":"批量更改数据"}},{multi:true})
WriteResult({ "nMatched" : 8, "nUpserted" : 0, "nModified" : 8 })
表示修改了8条数据.然后查看数据即可.
 
10.使用save()进行文档的替换
db.col.save({"_id" : ObjectId("5bfd3d2c4dd69ff6f9edd68f"),"title":"光头大魔王来啦"})
大概意思就是指定一个ID号.然后后面就写上ID号对应的新的文档内容就可以.就是替换内容不替换ID.因为mongo中id是唯一的.
 
11.更新单个文档,表示不管更新多少次都只是更新找到的第一条数据记录.
db.test_collection.updateOne({"name":"abc"},{$set:{"age":"30"}})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
12.一次性更新多个数据文档.
db.test_collection.updateMany({"age":{$gt:"10"}},{$set:{"status":"xyz"}})
db.imooc_collection.updateMany({c:2},{$set:{c:3}
{ "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 3 }
或者使用
db.imooc_collection.update({c:1},{$set:{c:2}},false,true)
进行数据的批量修改
13.删除一个文档(就是某一个数据集合),移除对应的ID和值就可以唯一的移除一个集合.尝试了一下,貌似不能一次性移除多条.
db.test_collection.remove({"_id" : ObjectId("5bfd5cba4dd69ff6f9edd691"})
14.如果需要更新一条不存在的数据的话可以使用update 的insert功能.
db.imooc_collection.update({x:98555},{x:985},true)
表示更新这条数据成后面的数据,如果没有就创建一条
15.查询语句.查询某条指定规则的语句,查询字段中包含name是abcd的集合.并且格式化显示.
db.test_collection.find({"name" : "abcd"}).pretty()
{
	"_id" : ObjectId("5bfd82384dd69ff6f9edd6a3"),
	"name" : "abcd",
	"age" : "26",
	"status" : "daxc"
}
15.在mongo中""内部的数字和不加"" 的数字貌似还不一样.
在进行条件筛选的时候条件应该注意.例如
db.test_collection.find({"age":{$gt:"25"}}).pretty()
表示查看"age"字段大于"25"的文档.
db.test_collection.find({"age":{$lt:40}}).pretty()
表示查找"age"字段中小于40的文档
db.test_collection.find({"age":"25"}).pretty()
表示查看"age"字段中字符串转换后同类型的大于25的文档.
16.查询返回指定数量的字段
db.col.find().limit(2)
表示返回2条最先查出来的数据
17.查出指定字段的指定信息.其他不显示.
db.col.find({},{"title":1,_id:1})
其中{},表示显示全部.title:1表示只显示title字段.和id字段.如果对应的字段是0的话表示不显示该字段.(id字段需要指定.不显示,其他字段不需要指定是否显示.如果不指定id是否显示的话默认显示id)
> db.col.find({},{"title":1,_id:0})
{ "title" : "PHP 教程" }
{ "title" : "Java 教程" }
18.跳过一条记录.进行显示.(目前总共就两条数据)例如
> db.col.find({},{"title":1,_id:0})
{ "title" : "PHP 教程" }
{ "title" : "Java 教程" }
> db.col.find({},{"title":1,_id:0}).skip(1)
{ "title" : "Java 教程" }
19.查询出来的语句按照一定的规则进行排序
db.col.find({},{"title":1,_id:0}).sort({"likes":1})
最后sort是指定需要进行排序的字段.如果是1 的话表示正序,如果是-1的话表示倒序排序.可以配合limit,和skip使用.
20.创建索引
db.col.createIndex({"title":1})
查看当前表中有哪些索引
db.col.getindexes()
21.删除指定索引
db.col.dropIndex({"title":1})
补充:貌似mongo中使用的某些编程语法.还他大爷的需要大小写区分.
22.查看集合索引地址大小.
db.col.totalIndexSize()
53248
23.删除所有索引
db.col.dropIndexes()
24.Mongo聚合
db.kkk.aggregate([{$group:{_id:"$1kk",num: {$sum : 1}}}])
其中aggregate是主函数, $group是使用分组.就是以1kk为分组依据.然后求和.
> db.kkk.aggregate([{$group:{_id:"$1kk",num: {$sum : 1}}}])
{ "_id" : 2, "num" : 4 }
{ "_id" : null, "num" : 12 }
{ "_id" : 1, "num" : 28 }
将所有的_id对应的值进行分组.对应的值可以是不一样的.如果对应筛选条件有相等的值就进行一次_id的添加.如果不同就生成一个新租.如果不符合筛选要求就全部归为一类.
25.
 
posted on 2019-09-24 19:21  DisCover_ry  阅读(211)  评论(0)    收藏  举报