基本操作

下面列举几个常用的:

1、Help查看命令提示

db.help();

副本集信息命令提示:rs.help

2、切换/创建数据库

use test       --当创建一个集合的时候会自动创建当前数据库

3、查询所有数据库

show dbs;

4、删除当前使用数据库

db.dropDatabase();

5、修复当前数据库

db.repairDatabase();

6、查看当前使用的数据库

db.getName();

7、显示当前db状态

db.stats();

8、当前db版本

db.version();

9、查看当前db的链接机器地址

db.getMongo();

Collection操作

1、创建一个聚集集合(table)

db.createCollection(“collName”);

2、得到指定名称的聚集集合(table)

db.getCollection("account");

3、得到当前db的所有聚集集合

db.getCollectionNames();

4、显示当前db所有聚集索引的状态

db.printCollectionStats();

用户相关

1、添加一个用户

db.addUser("userName", "talent123", true);  --添加用户、设置密码、是否只读

2、数据库认证、安全模式

db.auth("userName", "talent123");

3、显示当前所有用户

show users;

4、删除用户

db.removeUser("userName");

集合操作

1、创建一个聚集集合(table)

db.createCollection(“collName”);

2、得到指定名称的聚集集合(table)

db.getCollection("account");

3、得到当前db的所有聚集集合

db.getCollectionNames();

4、显示当前db所有聚集索引的状态

db.printCollectionStats();

插入数据

[/usr/mdb]#mongo

MongoDB shell version: 2.4.4

connecting to: test      --默认连接的是test数据库:

> show dbs     --显示当前有多少数据库以及容量

local   0.078125GB

test    0.203125GB

> db          --显示当前使用的数据库

test

> use  ta     --切换数据库(类似sqlserver和mysql语法)

switched to db ta  --use命令隐式得建立了一个数据库,无需用create一类的语句建立.

> db.test.insert({id:100,name:100})  --插入命令就自动建立了集合,无需手动建立.

> db.test.find().limit(100);  ----查找前100条记录

MongoDB数据插入方式多种多样,除了简单的insert方法,还有下面一些常用方法

1.save函数变量插入

> i={name:'huangxing'};

{ "name" : "huangxing" }

> j={name:'bijiben'};j={name:'bijiben'};

{ "name" : "bijiben" }

> db.test.save(i);  --相当于 insert into test(name) values(‘bijiben’);

> db.test.save(j);

>  db.test.find();

{ "_id" : ObjectId("51d4440c0f47849131f7e528"), "id" : 100, "name" : 100 }

{ "_id" : ObjectId("51d4455b0f47849131f7e52a"), "name" : "huangxing" }

{ "_id" : ObjectId("51d4456a0f47849131f7e52b"), "name" : "bijiben" }

2. 使用javascript语句循环插入:

> for( var i = 1; i < 10; i++ ) db.test.save( { x:i, y:12345 } );

> db.test.find();

{ "_id" : ObjectId("51d4440c0f47849131f7e528"), "id" : 100, "name" : 100 }

{ "_id" : ObjectId("51d4455b0f47849131f7e52a"), "name" : "huangxing" }

{ "_id" : ObjectId("51d4456a0f47849131f7e52b"), "name" : "bijiben" }

{ "_id" : ObjectId("51d4480c0f47849131f7e52c"), "x" : 1, "y" : 12345 }

{ "_id" : ObjectId("51d4480c0f47849131f7e52d"), "x" : 2, "y" : 12345 }

{ "_id" : ObjectId("51d4480c0f47849131f7e52e"), "x" : 3, "y" : 12345 }

{ "_id" : ObjectId("51d4480c0f47849131f7e52f"), "x" : 4, "y" : 12345 }

{ "_id" : ObjectId("51d4480c0f47849131f7e530"), "x" : 5, "y" : 12345 }

{ "_id" : ObjectId("51d4480c0f47849131f7e531"), "x" : 6, "y" : 12345 }

{ "_id" : ObjectId("51d4480c0f47849131f7e532"), "x" : 7, "y" : 12345 }

{ "_id" : ObjectId("51d4480c0f47849131f7e533"), "x" : 8, "y" : 12345 }

{ "_id" : ObjectId("51d4480c0f47849131f7e534"), "x" : 9, "y" : 12345 }

每条文档都自动生成一个类型为ObjectId的key,名字叫做_id,一个集合中每条文档的_id值必须不同,类似关系数据中的主键,但是他的类型可以是任意的,而且我们可以手动指定_id的值。

>db.test.insert({ "_id" : ObjectId("51d448680f47849131f7e534"), "x" : 8, "y" : 12345 })

E11000 duplicate key error index: ta.test.$_id_  dup key: { : ObjectId('51d448680f47849131f7e534') }   --插入了重复的_id值,所以报错

>db.test.insert({ "_id" : 'ok',"x" : 8 })

> db.test.find()

………………………………………………………………………………………

{ "_id" : ObjectId("51d448680f47849131f7e53b"), "x" : 7, "y" : 12345 }

{ "_id" : ObjectId("51d448680f47849131f7e53c"), "x" : 8, "y" : 12345 }

Type "it" for more

> it                --输入it查看更多行

{ "_id" : ObjectId("51d448680f47849131f7e53d"), "x" : 9, "y" : 12345 }

{ "_id" : "ok", "x" : 8 }

3. 自定义函数插入:

在用户的家目录建立.mongorc.js文件,启动mongo shell后,会自动加载这个文件,这样就可以使用它包含的函数了:

[root@RedHat-TA ~]# cat ~/.mongorc.js

function insertData(dbName, colName, num) {  --此函数用于插入数据

var col = db.getSiblingDB(dbName).getCollection(colName);

for (i = 0; i < num; i++) {

col.insert({x:i});   --执行插入操作

}

print(col.count());  --打印记录条数

}

[root@RedHat-TA ~]# mongo

> insertData("test","js",3)  --三个参数,分别表示数据库名、集合名和准备插入的记录条数

3

> db.js.find()

{ "_id" : ObjectId("51dfc243a7f9bc416310bb0f"), "x" : 0 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb10"), "x" : 1 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb11"), "x" : 2 }

查询

Mongodbc查询语句多种多样,现在就简单谈谈几种常用查询方法:

1. 常用方法:

> db.soc.find()

{ "_id" : ObjectId("51dfa14022b3900de099ba12"), "UUID" : 1, "RT" : ISODate("1970-01-01T00:00:02.009Z"), "CT1" : "a", "CT2" : "b", "NAME" : "c", "AREA" : "d", "SE" : "e", "NUM" : "alarm event num", "EVENT" : "event name", "LEVEL" : "event level", "RULE" : "rule", "DURA" : 4312432, "APP_P" : "app-protcol", "TRAN_P" : "tp", "A_ID" : 1, "URL" : "http://www.baidu.com", "U_P" : "par", "S_IP" : "192.168.73.66", "S_PT" : 1, "D_IP" : "192.168.73.22", "D_PT" : 4342, "MSG" : "description", "EN_T" : "system type", "EN_N" : "system name", "DE_IP" : "192.168.73.33", "C_ID" : 0.7236056630499661, "T_ID" : "44", "P_ID" : "55" }

这种查询方式一行展示一条文档,文档太长时不太方便查看,

2. 使用游标风格展示展示结果:

> var c=db.soc.find()  --实例化一个游标对象

> while ( c.hasNext() ) printjson( c.next() ) --调用游标对象的方法,展示结果

{

"_id" : ObjectId("51dfa14022b3900de099ba12"),

"UUID" : 1,

"RT" : ISODate("1970-01-01T00:00:02.009Z"),

"CT1" : "a",

"CT2" : "b",

"NAME" : "c",

"AREA" : "d",

"SE" : "e",

"NUM" : "alarm event num",

"EVENT" : "event name",

"LEVEL" : "event level",

"RULE" : "rule",

"DURA" : 4312432,

"APP_P" : "app-protcol",

"TRAN_P" : "tp",

"A_ID" : 1,

"URL" : "http://www.baidu.com",

"U_P" : "par",

"S_IP" : "192.168.73.66",

"S_PT" : 1,

"D_IP" : "192.168.73.22",

"D_PT" : 4342,

"MSG" : "description",

"EN_T" : "system type",

"EN_N" : "system name",

"DE_IP" : "192.168.73.33",

"C_ID" : 0.7236056630499661,

"T_ID" : "44",

"P_ID" : "55"

}

sh1:SECONDARY> db.me.insert({name:100});

sh1:SECONDARY> db.me.find({"name":{$gt:1}});

{ "_id" : ObjectId("51d57b89d8efbd65d3ff1561"), "name" : 100 }

游标json格式展示结果,比较直观,看少量文档时可以使用。

3.简单条件查询

> insertData("test","testdata",10)

50

> db.testdata.find({x:1}).forEach(printjson); --采用这种方式迭代输出游标,可以不用“it”分页显示

{ "_id" : ObjectId("51dfc243a7f9bc416310bb10"), "x" : 1 }

{ "_id" : ObjectId("51dfcbe4bff5f10fd078d941"), "x" : 1 }

{ "_id" : ObjectId("51dfcbe5bff5f10fd078d94b"), "x" : 1 }

{ "_id" : ObjectId("51dfcbe6bff5f10fd078d955"), "x" : 1 }

输出前4条文档:

> db.testdata.find().limit(4).forEach(printjson);

--相当于:select * from testata where rownum<=4

{ "_id" : ObjectId("51dfc243a7f9bc416310bb0f"), "x" : 0 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb10"), "x" : 1 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb11"), "x" : 2 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb12"), "x" : 3 }

从第3条记录开始,输出4行文档:

> db.testdata.find().limit(4).forEach(printjson);

{ "_id" : ObjectId("51dfc243a7f9bc416310bb0f"), "x" : 0 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb10"), "x" : 1 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb11"), "x" : 2 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb12"), "x" : 3 }

> db.testdata.find().skip(3).limit(4).forEach(printjson);

{ "_id" : ObjectId("51dfc243a7f9bc416310bb12"), "x" : 3 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb13"), "x" : 4 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb14"), "x" : 5 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb15"), "x" : 6 }

4. 条件操作符过滤:

, >=,!=

例如,要求输出的文档中,x在1-5之间

> db.testdata.find({x:{$gte:1,$lte:5}}).forEach(printjson);

{ "_id" : ObjectId("51dfc243a7f9bc416310bb10"), "x" : 1 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb11"), "x" : 2 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb12"), "x" : 3 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb13"), "x" : 4 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb14"), "x" : 5 }

{ "_id" : ObjectId("51dfcbe4bff5f10fd078d941"), "x" : 1 }

{ "_id" : ObjectId("51dfcbe4bff5f10fd078d942"), "x" : 2 }

{ "_id" : ObjectId("51dfcbe4bff5f10fd078d943"), "x" : 3 }

{ "_id" : ObjectId("51dfcbe4bff5f10fd078d944"), "x" : 4 }

{ "_id" : ObjectId("51dfcbe4bff5f10fd078d945"), "x" : 5 }

{ "_id" : ObjectId("51dfcbe5bff5f10fd078d94b"), "x" : 1 }

{ "_id" : ObjectId("51dfcbe5bff5f10fd078d94c"), "x" : 2 }

同理,大于是$gt,小于是$lt, 不等于是$ne

5 字段查询

> db.testdata.find({x:1},{'_id':1, 'x':1}) --select _id,x from testdata where x=1;

{ "_id" : ObjectId("51e2583c2e78aa4298b4716d"), "x" : 1 }

{ "_id" : ObjectId("51e2583f2e78aa4298b47172"), "x" : 1 }

排序

--select * from testdata where x<=2 order by _id  asc,x desc

>  db.testdata.find({x:{$lte:2}}).sort({_id:1,x:-1})

{ "_id" : ObjectId("51e2583c2e78aa4298b4716c"), "x" : 0 }

{ "_id" : ObjectId("51e2583c2e78aa4298b4716d"), "x" : 1 }

{ "_id" : ObjectId("51e2583c2e78aa4298b4716e"), "x" : 2 }

{ "_id" : ObjectId("51e2583f2e78aa4298b47171"), "x" : 0 }

{ "_id" : ObjectId("51e2583f2e78aa4298b47172"), "x" : 1 }

{ "_id" : ObjectId("51e2583f2e78aa4298b47173"), "x" : 2 }

其他常用谓词

OR

> db.testdata.find({$or:[{x:{$lte:1}}, {x:{$gte:3}}]})db.testdata.find({$or:[{x:{$lte:1}}, {x:{$gte:3}}]})

--select * from testdata where x <=1 or  x >= 3

{ "_id" : ObjectId("51e2583c2e78aa4298b4716c"), "x" : 0 }

{ "_id" : ObjectId("51e2583c2e78aa4298b4716d"), "x" : 1 }

{ "_id" : ObjectId("51e2583c2e78aa4298b4716f"), "x" : 3 }

{ "_id" : ObjectId("51e2583c2e78aa4298b47170"), "x" : 4 }

{ "_id" : ObjectId("51e2583f2e78aa4298b47171"), "x" : 0 }

{ "_id" : ObjectId("51e2583f2e78aa4298b47172"), "x" : 1 }

{ "_id" : ObjectId("51e2583f2e78aa4298b47174"), "x" : 3 }

{ "_id" : ObjectId("51e2583f2e78aa4298b47175"), "x" : 4 }

IN

--select * from testdata where x in (1, 2)

> db.testdata.find({x:{$in:[1,2]}})db.testdata.find({x:{$in:[1,2]}})

{ "_id" : ObjectId("51e2583c2e78aa4298b4716d"), "x" : 1 }

{ "_id" : ObjectId("51e2583c2e78aa4298b4716e"), "x" : 2 }

{ "_id" : ObjectId("51e2583f2e78aa4298b47172"), "x" : 1 }

{ "_id" : ObjectId("51e2583f2e78aa4298b47173"), "x" : 2 }

Group by

--SELECT sum(x) FROM testdata where x!=0  GROUP BY x

>db.testdata.group({

key : {'x' : true},

cond: {'x':{$ne:0}},

reduce: function(obj,prev) { prev.sum += obj.x;},

initial: {sum : 0}

});

[

{

"x" : 1,

"sum" : 2

},

{

"x" : 2,

"sum" : 4

},

{

"x" : 3,

"sum" : 6

},

{

"x" : 4,

"sum" : 8

}

]

DISTINCT

> db.testdata.distinct('x')

[ 0, 1, 2, 3, 4 ]

更新

update() 有几个参数需要注意。

db.collection.update(criteria, objNew, upsert, mult)

criteria: 需要被更新的条件表达式

objNew: 更新表达式

upsert: 如目标记录不存在,是否插入新文档。

multi: 是否更新多个文档。

-- update testdata set x = x + 10 where x in(0,1)

> db.testdata.update({x:{$in:[0,1]}},{$inc:{x:10}},false,true)

删除

> db.testdata.remove()

//移除所有

> db.testdata.remove({x:0})

//移除x='0'的行

1、添加一个用户

db.addUser("userName", "talent123", true);  --添加用户、设置密码、是否只读

2、数据库认证、安全模式

db.auth("userName", "talent123");

3、显示当前所有用户

show users;

4、删除用户

db.removeUser("userName");

集合操作

1、创建一个聚集集合(table)

db.createCollection(“collName”);

2、得到指定名称的聚集集合(table)

db.getCollection("account");

3、得到当前db的所有聚集集合

db.getCollectionNames();

4、显示当前db所有聚集索引的状态

db.printCollectionStats();

插入数据

[/usr/mdb]#mongo

MongoDB shell version: 2.4.4

connecting to: test      --默认连接的是test数据库:

> show dbs     --显示当前有多少数据库以及容量

local   0.078125GB

test    0.203125GB

> db          --显示当前使用的数据库

test

> use  ta     --切换数据库(类似sqlserver和mysql语法)

switched to db ta  --use命令隐式得建立了一个数据库,无需用create一类的语句建立.

> db.test.insert({id:100,name:100})  --插入命令就自动建立了集合,无需手动建立.

> db.test.find().limit(100);  ----查找前100条记录

MongoDB数据插入方式多种多样,除了简单的insert方法,还有下面一些常用方法

1.save函数变量插入

> i={name:'huangxing'};

{ "name" : "huangxing" }

> j={name:'bijiben'};j={name:'bijiben'};

{ "name" : "bijiben" }

> db.test.save(i);  --相当于 insert into test(name) values(‘bijiben’);

> db.test.save(j);

>  db.test.find();

{ "_id" : ObjectId("51d4440c0f47849131f7e528"), "id" : 100, "name" : 100 }

{ "_id" : ObjectId("51d4455b0f47849131f7e52a"), "name" : "huangxing" }

{ "_id" : ObjectId("51d4456a0f47849131f7e52b"), "name" : "bijiben" }

2. 使用javascript语句循环插入:

> for( var i = 1; i < 10; i++ ) db.test.save( { x:i, y:12345 } );

> db.test.find();

{ "_id" : ObjectId("51d4440c0f47849131f7e528"), "id" : 100, "name" : 100 }

{ "_id" : ObjectId("51d4455b0f47849131f7e52a"), "name" : "huangxing" }

{ "_id" : ObjectId("51d4456a0f47849131f7e52b"), "name" : "bijiben" }

{ "_id" : ObjectId("51d4480c0f47849131f7e52c"), "x" : 1, "y" : 12345 }

{ "_id" : ObjectId("51d4480c0f47849131f7e52d"), "x" : 2, "y" : 12345 }

{ "_id" : ObjectId("51d4480c0f47849131f7e52e"), "x" : 3, "y" : 12345 }

{ "_id" : ObjectId("51d4480c0f47849131f7e52f"), "x" : 4, "y" : 12345 }

{ "_id" : ObjectId("51d4480c0f47849131f7e530"), "x" : 5, "y" : 12345 }

{ "_id" : ObjectId("51d4480c0f47849131f7e531"), "x" : 6, "y" : 12345 }

{ "_id" : ObjectId("51d4480c0f47849131f7e532"), "x" : 7, "y" : 12345 }

{ "_id" : ObjectId("51d4480c0f47849131f7e533"), "x" : 8, "y" : 12345 }

{ "_id" : ObjectId("51d4480c0f47849131f7e534"), "x" : 9, "y" : 12345 }

每条文档都自动生成一个类型为ObjectId的key,名字叫做_id,一个集合中每条文档的_id值必须不同,类似关系数据中的主键,但是他的类型可以是任意的,而且我们可以手动指定_id的值。

>db.test.insert({ "_id" : ObjectId("51d448680f47849131f7e534"), "x" : 8, "y" : 12345 })

E11000 duplicate key error index: ta.test.$_id_  dup key: { : ObjectId('51d448680f47849131f7e534') }   --插入了重复的_id值,所以报错

>db.test.insert({ "_id" : 'ok',"x" : 8 })

> db.test.find()

………………………………………………………………………………………

{ "_id" : ObjectId("51d448680f47849131f7e53b"), "x" : 7, "y" : 12345 }

{ "_id" : ObjectId("51d448680f47849131f7e53c"), "x" : 8, "y" : 12345 }

Type "it" for more

> it                --输入it查看更多行

{ "_id" : ObjectId("51d448680f47849131f7e53d"), "x" : 9, "y" : 12345 }

{ "_id" : "ok", "x" : 8 }

3. 自定义函数插入:

在用户的家目录建立.mongorc.js文件,启动mongo shell后,会自动加载这个文件,这样就可以使用它包含的函数了:

[root@RedHat-TA ~]# cat ~/.mongorc.js

function insertData(dbName, colName, num) {  --此函数用于插入数据

var col = db.getSiblingDB(dbName).getCollection(colName);

for (i = 0; i < num; i++) {

col.insert({x:i});   --执行插入操作

}

print(col.count());  --打印记录条数

}

[root@RedHat-TA ~]# mongo

> insertData("test","js",3)  --三个参数,分别表示数据库名、集合名和准备插入的记录条数

3

> db.js.find()

{ "_id" : ObjectId("51dfc243a7f9bc416310bb0f"), "x" : 0 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb10"), "x" : 1 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb11"), "x" : 2 }

查询

Mongodbc查询语句多种多样,现在就简单谈谈几种常用查询方法:

1. 常用方法:

> db.soc.find()

{ "_id" : ObjectId("51dfa14022b3900de099ba12"), "UUID" : 1, "RT" : ISODate("1970-01-01T00:00:02.009Z"), "CT1" : "a", "CT2" : "b", "NAME" : "c", "AREA" : "d", "SE" : "e", "NUM" : "alarm event num", "EVENT" : "event name", "LEVEL" : "event level", "RULE" : "rule", "DURA" : 4312432, "APP_P" : "app-protcol", "TRAN_P" : "tp", "A_ID" : 1, "URL" : "http://www.baidu.com", "U_P" : "par", "S_IP" : "192.168.73.66", "S_PT" : 1, "D_IP" : "192.168.73.22", "D_PT" : 4342, "MSG" : "description", "EN_T" : "system type", "EN_N" : "system name", "DE_IP" : "192.168.73.33", "C_ID" : 0.7236056630499661, "T_ID" : "44", "P_ID" : "55" }

这种查询方式一行展示一条文档,文档太长时不太方便查看,

2. 使用游标风格展示展示结果:

> var c=db.soc.find()  --实例化一个游标对象

> while ( c.hasNext() ) printjson( c.next() ) --调用游标对象的方法,展示结果

{

"_id" : ObjectId("51dfa14022b3900de099ba12"),

"UUID" : 1,

"RT" : ISODate("1970-01-01T00:00:02.009Z"),

"CT1" : "a",

"CT2" : "b",

"NAME" : "c",

"AREA" : "d",

"SE" : "e",

"NUM" : "alarm event num",

"EVENT" : "event name",

"LEVEL" : "event level",

"RULE" : "rule",

"DURA" : 4312432,

"APP_P" : "app-protcol",

"TRAN_P" : "tp",

"A_ID" : 1,

"URL" : "http://www.baidu.com",

"U_P" : "par",

"S_IP" : "192.168.73.66",

"S_PT" : 1,

"D_IP" : "192.168.73.22",

"D_PT" : 4342,

"MSG" : "description",

"EN_T" : "system type",

"EN_N" : "system name",

"DE_IP" : "192.168.73.33",

"C_ID" : 0.7236056630499661,

"T_ID" : "44",

"P_ID" : "55"

}

sh1:SECONDARY> db.me.insert({name:100});

sh1:SECONDARY> db.me.find({"name":{$gt:1}});

{ "_id" : ObjectId("51d57b89d8efbd65d3ff1561"), "name" : 100 }

游标json格式展示结果,比较直观,看少量文档时可以使用。

3.简单条件查询

> insertData("test","testdata",10)

50

> db.testdata.find({x:1}).forEach(printjson); --采用这种方式迭代输出游标,可以不用“it”分页显示

{ "_id" : ObjectId("51dfc243a7f9bc416310bb10"), "x" : 1 }

{ "_id" : ObjectId("51dfcbe4bff5f10fd078d941"), "x" : 1 }

{ "_id" : ObjectId("51dfcbe5bff5f10fd078d94b"), "x" : 1 }

{ "_id" : ObjectId("51dfcbe6bff5f10fd078d955"), "x" : 1 }

输出前4条文档:

> db.testdata.find().limit(4).forEach(printjson);

--相当于:select * from testata where rownum<=4

{ "_id" : ObjectId("51dfc243a7f9bc416310bb0f"), "x" : 0 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb10"), "x" : 1 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb11"), "x" : 2 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb12"), "x" : 3 }

从第3条记录开始,输出4行文档:

> db.testdata.find().limit(4).forEach(printjson);

{ "_id" : ObjectId("51dfc243a7f9bc416310bb0f"), "x" : 0 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb10"), "x" : 1 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb11"), "x" : 2 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb12"), "x" : 3 }

> db.testdata.find().skip(3).limit(4).forEach(printjson);

{ "_id" : ObjectId("51dfc243a7f9bc416310bb12"), "x" : 3 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb13"), "x" : 4 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb14"), "x" : 5 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb15"), "x" : 6 }

4. 条件操作符过滤:

, >=,!=

例如,要求输出的文档中,x在1-5之间

> db.testdata.find({x:{$gte:1,$lte:5}}).forEach(printjson);

{ "_id" : ObjectId("51dfc243a7f9bc416310bb10"), "x" : 1 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb11"), "x" : 2 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb12"), "x" : 3 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb13"), "x" : 4 }

{ "_id" : ObjectId("51dfc243a7f9bc416310bb14"), "x" : 5 }

{ "_id" : ObjectId("51dfcbe4bff5f10fd078d941"), "x" : 1 }

{ "_id" : ObjectId("51dfcbe4bff5f10fd078d942"), "x" : 2 }

{ "_id" : ObjectId("51dfcbe4bff5f10fd078d943"), "x" : 3 }

{ "_id" : ObjectId("51dfcbe4bff5f10fd078d944"), "x" : 4 }

{ "_id" : ObjectId("51dfcbe4bff5f10fd078d945"), "x" : 5 }

{ "_id" : ObjectId("51dfcbe5bff5f10fd078d94b"), "x" : 1 }

{ "_id" : ObjectId("51dfcbe5bff5f10fd078d94c"), "x" : 2 }

同理,大于是$gt,小于是$lt, 不等于是$ne

5 字段查询

> db.testdata.find({x:1},{'_id':1, 'x':1}) --select _id,x from testdata where x=1;

{ "_id" : ObjectId("51e2583c2e78aa4298b4716d"), "x" : 1 }

{ "_id" : ObjectId("51e2583f2e78aa4298b47172"), "x" : 1 }

排序

--select * from testdata where x<=2 order by _id  asc,x desc

>  db.testdata.find({x:{$lte:2}}).sort({_id:1,x:-1})

{ "_id" : ObjectId("51e2583c2e78aa4298b4716c"), "x" : 0 }

{ "_id" : ObjectId("51e2583c2e78aa4298b4716d"), "x" : 1 }

{ "_id" : ObjectId("51e2583c2e78aa4298b4716e"), "x" : 2 }

{ "_id" : ObjectId("51e2583f2e78aa4298b47171"), "x" : 0 }

{ "_id" : ObjectId("51e2583f2e78aa4298b47172"), "x" : 1 }

{ "_id" : ObjectId("51e2583f2e78aa4298b47173"), "x" : 2 }

其他常用谓词

OR

> db.testdata.find({$or:[{x:{$lte:1}}, {x:{$gte:3}}]})db.testdata.find({$or:[{x:{$lte:1}}, {x:{$gte:3}}]})

--select * from testdata where x <=1 or  x >= 3

{ "_id" : ObjectId("51e2583c2e78aa4298b4716c"), "x" : 0 }

{ "_id" : ObjectId("51e2583c2e78aa4298b4716d"), "x" : 1 }

{ "_id" : ObjectId("51e2583c2e78aa4298b4716f"), "x" : 3 }

{ "_id" : ObjectId("51e2583c2e78aa4298b47170"), "x" : 4 }

{ "_id" : ObjectId("51e2583f2e78aa4298b47171"), "x" : 0 }

{ "_id" : ObjectId("51e2583f2e78aa4298b47172"), "x" : 1 }

{ "_id" : ObjectId("51e2583f2e78aa4298b47174"), "x" : 3 }

{ "_id" : ObjectId("51e2583f2e78aa4298b47175"), "x" : 4 }

IN

--select * from testdata where x in (1, 2)

> db.testdata.find({x:{$in:[1,2]}})db.testdata.find({x:{$in:[1,2]}})

{ "_id" : ObjectId("51e2583c2e78aa4298b4716d"), "x" : 1 }

{ "_id" : ObjectId("51e2583c2e78aa4298b4716e"), "x" : 2 }

{ "_id" : ObjectId("51e2583f2e78aa4298b47172"), "x" : 1 }

{ "_id" : ObjectId("51e2583f2e78aa4298b47173"), "x" : 2 }

Group by

--SELECT sum(x) FROM testdata where x!=0  GROUP BY x

>db.testdata.group({

key : {'x' : true},

cond: {'x':{$ne:0}},

reduce: function(obj,prev) { prev.sum += obj.x;},

initial: {sum : 0}

});

[

{

"x" : 1,

"sum" : 2

},

{

"x" : 2,

"sum" : 4

},

{

"x" : 3,

"sum" : 6

},

{

"x" : 4,

"sum" : 8

}

]

DISTINCT

> db.testdata.distinct('x')

[ 0, 1, 2, 3, 4 ]

更新

update() 有几个参数需要注意。

db.collection.update(criteria, objNew, upsert, mult)

criteria: 需要被更新的条件表达式

objNew: 更新表达式

upsert: 如目标记录不存在,是否插入新文档。

multi: 是否更新多个文档。

-- update testdata set x = x + 10 where x in(0,1)

> db.testdata.update({x:{$in:[0,1]}},{$inc:{x:10}},false,true)

删除

> db.testdata.remove()

//移除所有

> db.testdata.remove({x:0})

//移除x='0'的行

mongodb数据库显示obj_MongoDB数据库基本操作相关推荐

  1. mongodb数据库显示obj_MongoDB基础(三)—基本操作及管理 | leon的博客

    第1章 MongoDB的基本操作 1.1 查询帮助信息 > help db.help()                    help on db methods db.mycoll.help ...

  2. mongodb数据库显示obj_MongoDB创建和查看数据库

    MongoDB 将 BSON 文档(即数据记录)存储在集合中,数据库包含文档集合.在 MongoDB 里面存在数据库的概念,但没有模式,保存数据的结构是 BSON 结构,只不过在进行一些数据处理的时候 ...

  3. mongodb数据库显示obj_Mongodb使用

    1.下载安装 1.1.首先去官网下载mongodb对应版本安装 https://www.mongodb.com/download-center 解压到目录 例如:c:/mongo 创建文件夹用于mon ...

  4. MongoDB 芒果数据库简介安装与基本操作(1)

    NoSQL简介 SQL 就是 Structor Query Language结构化查询语言. MySQL.Oracle.SQL Server都是SQL数据库.SQL缺点就是限制字段.SQL优点就是能够 ...

  5. MongoDB数据库和集合的基本操作

    非关系型数据库 命令区分大小写:命令结束符为回车(与MySQL不同之处) mongodb配置 sudo service mongodb start mongo mongodb基本概念 集合 对应于关系 ...

  6. 数据库以及表的基本操作

    一.数据库的操作 create database[if not exists]数据库名; 创建一个名字为company2的使用utf8忽略大小写的数据库 create database company ...

  7. 服务器显示数据库,显示数据库服务器上的数据库数据库

    显示数据库服务器上的数据库数据库 内容精选 换一换 文档数据库服务支持开启公网访问功能,通过弹性IP进行访问.您也可通过弹性云服务器的内网访问文档数据库.要将已有的MongoDB数据库迁移到文档数据库 ...

  8. node用mongodb还是mysql,Node 操作 mongoDB 数据库和 mySQL数据库

    下载安装 MongoDB image.png 直接点击下载就行了 image.png 安装 mongodb 一直点击下一步,知道这一步 image.png 选中自己选择想安装的目录路径(选择安装的目录 ...

  9. 深入浅出Qt数据库编程:从基本操作到高级技巧

    深入浅出Qt数据库编程:从基本操作到高级技巧 (Demystifying Qt Database Programming: From Basic Operations to Advanced Tech ...

最新文章

  1. 工作之余如何提高个人技术水平
  2. 日记 [2008年01月21日]
  3. Android Studio 导入应用时报错 Error:java.lang.RuntimeException: Some file crunching failed, see logs for de
  4. oracle11gR2静默安装
  5. 【Python Flask】使用Ajax向后台提交数据(拼接url方式)
  6. 明白了为什么java方法上面为什么要加个@符号
  7. Oracle 数据库监听配置
  8. python模块调用模块_Python模块调用
  9. vit-pytorch
  10. uartz Spring与Spring Task总结
  11. 读书笔记:《圈子圈套》
  12. spring boot整合第三方微信开发工具 weixin-java-miniapp 实现小程序微信登录
  13. 高质量程序设计指南(笔记)
  14. 最全的“四大天王”合影集(绝对经典…
  15. js操作像素实现图片编辑
  16. 从A至Z,用30个单词来概括过去十年的游戏行业
  17. 拿起手术刀 深入剖解路由器的“心脏”技术
  18. android简单备忘录实现,android备忘录实现
  19. STC-ISP程序下载
  20. MacOS中不使用XQuartz/X11构建OpenGL程序的方法

热门文章

  1. WordCount编程及执行流程
  2. Testin云测试-标准兼容性测试
  3. 蓝桥杯之Python算法设计系列(一)
  4. 仁慈的独裁者——Python之父吉多·范罗苏姆
  5. JDK卸载和彻底删除
  6. 会计假设、会计要素、借贷记账法、会计科目和会计账户
  7. 奥的斯3100电气图纸_奥的斯otis 3200电气原理图及序号与符号说明
  8. 【推荐系统学习】推荐系统架构
  9. nltk.download(‘punkt‘)报错
  10. 【前端】内存泄露及解决方案