`
Everyday都不同
  • 浏览: 714360 次
  • 性别: Icon_minigender_1
  • 来自: 宇宙
社区版块
存档分类
最新评论

Mongodb的简单操作

阅读更多

Mongodb的简单操作

 

【简介】

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。

Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

 

mongodb是“面向集合”的,数据被分组存储在数据集中,被称为一个集合(Collection)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。

 

【基本概念】

文档:键值对的有序集,如{"age":25, "name":"John", "gender":"female"}--相当于关系型数据库里面表的行(记录,key为列,value为每一列的值)

集合:一组文档的集,--相当于关系型数据库里面的表(table)

数据库:多个文档构成的集合,--相当于关系型数据库的数据库(database)

 

1.对数据库的操作

#查询所有数据库

show dbs;

#查看当前所使用的数据库

db

db.getName()

#切换或创建数据库,当不存在时会自动创建,需要进行创建集合的操作之后,才会在show dbs里面显示出来

use dbname

#当前db连接的地址

db.getMongo()

#当前db的状态

db.stats()

 

2.对集合的操作

#创建集合

db.createCollection(“collName”, {size: 20, capped: 5, max: 100}); //{}里面的参数可选,不加表示不对容量做限制

#得到指定集合

db.getColleciton("collName")

#得到当前db所有集合的名称

db.getCollectionNames()

 

3.对用户的操作

#显示当前db下的所有用户

show users

#添加用户

db.addUser("name");

db.addUser("userName", "pwd123", true);

#删除用户

db.removeUser("userName")

 

4.集合的查询(都是指当前db)

#查询当前db下指定集合的所有文档

db.collName.find()  ---联想:select * from collName;

#查询指定集合对某列去重之后的数据

db.collName.distinct("name") ---联想:select distinct name from collName;

#根据某列指定值查询

db.collName.find({"age": 25}) ---联想:select * from collName where age = 25;

#根据大于或等于查询

db.collName.find({"age": {$gt :20}}) --- age > 20

db.collName.find({"age": {$lt :20}}) --- age < 20

($gte则表示>=, $lte则表示<=)

#根据区间查询

db.collName.find({"age": {$gt :20, $lt:30}})  ---联想:select * from collName where age>20 and age<30;

#模糊匹配查询

db.collName.find({"name", /mongo/})  ---联想:select * from collName where name like '%mongo%';

db.collName.find({"name", /^mongo/}) ---联想:select * from collName where name like 'mongo%';(以……开头)

#查询指定列

db.collName.find({}, {name: 1, age: 1}); ---联想:select name, age from collName;

db.collName.find({age: {$gt: 25}}, {name: 1, age: 1});  ---联想:select name, age from collName where age > 25;(根据条件查询指定列)

#多条件查询

db.collName.find({name: 'Fanfan', age: 40});  ---联想:select * from collName where name = 'Fanfan' and age = 40;

#查询前几条

db.collName.find().limit(10)

#查询10条以后的

db.collName.find().skip(10)

#分页查询第5-10条

db.collName.find().limit(10).skip(5)

#查询结果数

db.collName.find({"age", {$lte:23}}).count()  ---联想:select count(1) from collName where age <= 23

#in, or 

db.collName.find({"user_id":{$in:["12345","123"]}})  ---联想: select * from collName where user_id in("12345", "123")

db.collName.find({$or: [{age: 22}, {age: 25}]});   ---联想:select * from collName where age = 22 or age = 25

($nin表示not in)

#按某列排序(-1表示降序)

db.collName.find().sort({age:1}) ---联想:select * from collName order by age (desc)

 

5.添加

db.collName.save({name: 'Lily', age: 25, gender: "female"});

db.collName.insert({name: 'Lily', age: 25, gender: "female"});

--联想:insert into collName(name, age, gender) values('Lily', 25, 'female');

 

6.修改

db.collName.update({age: 25}, {$set: {name: 'changeName'}}, false, true);   ---联想:update collName set name = ‘changeName’ where age = 25;

db.collName.update({name: 'Lisi'}, {$inc: {age: 50}}, false, true);   ---联想:update collName set age = age + 50 where name = ‘Lisi’;

db.collName.update({name: 'Lisi'}, {$inc: {age: 50}, $set: {name: 'hoho'}}, false, true);   ---联想:update collName set age = age + 50, name = ‘hoho’ where name = ‘Lisi’;

 

7.删除

db.collName.remove({age: 32});  ---联想:delete from collName where age = 32;

 

8.复合操作

db.collName.findAndModify({

    query: {age: {$gte: 25}}, 

    sort: {age: -1}, 

    update: {$set: {name: 'a2'}, $inc: {age: 2}},

    remove: true

});

 

db.runCommand({ findandmodify : "collName", 

    query: {age: {$gte: 25}}, 

    sort: {age: -1}, 

    update: {$set: {name: 'Angela'}, $inc: {age: 2}},

    remove: true

});

 

9.加索引

#加唯一索引

db.collection.ensureIndex({"chatId":1},{unique:true})

#加联合索引

db.collection.ensureIndex({"chatId":1, "pk":1})

 

10.其他

1)print("Hello World")  ---打印

2)for (var i = 0; i < 30; i++) {

... db.collName.save({name: "u_" + i, age: 22 + i, sex: i % 2});

... };---循环添加

3)var cursor = db.collName.find();

> while (cursor.hasNext()) { 

    printjson(cursor.next()); ---把集合的每条document打印成json格式的字符串

}---游标遍历

4)db.collName.find().forEach(printjson);---循环迭代

(find里面也可以加过滤条件)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics