mongodb与mysql命令对比 mongodb语法
MongoDB对数据的操作很丰富,下面做一些举例说明,内容大部分来自官方文档,另外有部分为自己理解。
db.colls.find() //select * from colls
db.colls.find({‘last_name’: ‘Smith’});//select * from colls where last_name=’Smith’
db.colls.find( { x : 3, y : “foo” } );//select * from colls where x=3 and y=’foo’
db.colls.find({j: {$ne: 3}, k: {$gt: 10} });//select * from colls where j!=3 and k>10
db.colls.find({}, {a:0});//查询除a为0外的所有数据
db.colls.find({ “field” : { $gt: value } } ); db.colls.find({ “field” : { $gte: value } } ); 也可对某一字段做范围查询 不等于查询用字符$ne in查询用字符$in db.colls.find({j:{$in: [2,4,6]}});
db.colls.find({j:{$nin: [2,4,6]}});
db.colls.find( { a : { $mod : [ 10 , 1 ] } } )// where a % 10 == 1
db.colls.find( { a: { $all: [ 2, 3 ] } } );//指定a满足数组中任意值时
db.colls.find( { a : { $size: 1 } } );//对对象的数量查询,此查询查询a的子对象数目为1的记录
db.colls.find( { a : { $exists : true } } ); // 存在a对象的数据 db.colls.find( { a : { $type : 16 } } ); // 匹配a为int类型数据
db.colls.find( { name : /acme.*corp/i } );//类似于SQL中like
db.colls.find( { “author.name” : “joe” } );
db.colls.find( { name : { $not : /acme.*corp/i } } ); sort()排序 limit()对限制查询数据返回个数 skip()跳过某些数据 snapshot()快照保证没有重复数据返回或对象丢失
db.students.find({‘address.state’ : ‘CA’}).count();//效率较高 group()对查询结果分组和SQL中group by函数类似 shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用JavaScript脚本完成操作的。 1、Help查看命令提示 - > help
- > db.help();
- > db.yourColl.help();
- > db.youColl.find().help();
- > rs.help();
当创建一个集合(table)的时候会自动创建当前数据库 4、删除当前使用数据库
将指定机器上的数据库的数据克隆到当前数据库 将本机的mydb的数据复制到temp数据库中 8、查看当前使用的数据库
9、显示当前db状态
11、查看当前db的链接机器地址
1、创建一个聚集集合(table) - > db.createCollection(“collName”, {size: 20, capped: 5, max: 100});
3、得到当前db的所有聚集集合 - > db.getCollectionNames();
? 用户相关 添加用户、设置密码、是否只读 3、显示当前所有用户
? 其他 2、清除错误记录
三、Collection聚集集合操作1、查看帮助
3、查看数据空间大小 - > db.userInfo.dataSize();
5、得到当前聚集的状态 > db.userInfo.stats();7、聚集集合储存空间大小 > db.userInfo.storageSize();9、聚集集合重命名 > db.userInfo.renameCollection("users");10、删除当前聚集集合 > db.userInfo.drop();1、查询所有记录 > db.userInfo.find();默认每页显示20条记录,当显示不下的情况下,可以用it迭代命令查询下一页数据。注意:键入it命令不能带“;” 2、查询去掉后的当前聚集集合中的某列的重复数据 > db.userInfo.distinct("name");相当于:select distict name from userInfo; 相当于:select * from userInfo where age = 22; 相当于:select * from userInfo where age > 22; 相当于:select * from userInfo where age < 22; 相当于:select * from userInfo where age >= 25; 8、查询age >= 23 并且 age <= 26 > db.userInfo.find({age: {$gte: 23, $lte: 26}});相当于:select * from userInfo where name like ‘%mongo%’; select * from userInfo where name like ‘mongo%’; 相当于:select name, age from userInfo; 12、查询指定列name、age数据, age > 25 > db.userInfo.find({age: {$gt: 25}}, {name: 1, age: 1});13、按照年龄排序 降序: > db.userInfo.find().sort({age: -1});相当于:select * from userInfo where name = ‘zhangsan’ and age = ‘22’; 相当于:select top 5 * from userInfo; 相当于:select * from userInfo where id not in ( select top 10 * from userInfo ); 可用于分页,limit是pageSize,skip是第几页*pageSize 相当于:select * from userInfo where age = 22 or age = 25; 相当于:select top 1 * from userInfo; > db.userInfo.find().limit(1);相当于:select count(*) from userInfo where age >= 20; 相当于:select count(sex) from userInfo; 1、创建索引 > db.userInfo.ensureIndex({name: 1});> db.userInfo.ensureIndex({name: 1, ts: -1});3、查看总索引记录大小 > db.userInfo.totalIndexSize();5、删除指定索引 > db.users.dropIndex("name_1");? 修改、添加、删除集合数据 添加的数据的数据列,没有固定,根据添加的数据为准 相当于:update users set name = ‘changeName’ where age = 25; > db.users.update({name: 'Lisi'}, {$inc: {age: 50}}, false, true);相当于:update users set age = age + 50, name = ‘hoho’ where name = ‘Lisi’; 4、查询修改删除 [html] view plaincopy
- > db.users.findAndModify({
- ... query: {age: {$gte: 25}},
- ... sort: {age: -1},
- ... update: {$set: {name: 'a2'}, $inc: {age: 2}},
- ... remove: true
- ... });
-
- > db.runCommand({ findandmodify : "users",
- ... query: {age: {$gte: 25}},
- ... sort: {age: -1},
- ... update: {$set: {name: 'a2'}, $inc: {age: 2}},
- ... remove: true
- ... });
[/td][td]<span]1、简单Hello World
2、将一个对象转换成json - > tojson(new Object());
- > tojson(new Object('a'));
这样就循环添加了30条数据,同样也可以省略括号的写法 - > for (var i = 0; i < 30; i++) db.users.save({name: "u_" + i, age: 22 + i, sex: i % 2});
4、find 游标查询 - >var cursor = db.users.find();
- > while (cursor.hasNext()) {
- ... printjson(cursor.next());
- ... }
同样可以省略{}号 forEach中必须传递一个函数来处理每条迭代的数据信息 取得下标索引为4的那条数据 那样我们也可以用循环显示数据 - > for (var i = 0, len = c.length(); i < len; i++) printjson(c);
用toArray方法将其转换为数组 只显示age <= 28的并且只显示age这列数据 - > db.users.find({age: {$lte: 28}}, {age: 1}).forEach(printjson);
- > db.users.find({age: {$lte: 28}}, {age: true}).forEach(printjson);
9、forEach传递函数显示信息 - > db.things.find({x:4}).forEach(function(x) {print(tojson(x));});
那么关于mongodb的shell操作的讲解就先到这了,基本涵盖了mongodb最为常用的操作方法,那么下一节我们会讲述用java如何驱动mongodb,即所谓的CRUD。
|