首先介绍日常增,删,改,查询:
1:查询
show collections ----查看数据库下的集合
db.collection-name.find() --------最基础的查询db后面直接跟集合的名称,不能完全显示真个集合的数据,可以用it显示
db.collection-name.findOne() ----------一定要注意大写,返回集合的第一条记录,如果没数据,是NULL
db.collection-name.find().forEach(printjson);可以显示所有行
条件查询:
举例:> db.post.find();
{ "_id" : ObjectId("4eae0669b81d17242113d9c4"), "name" : "docments" }
{ "_id" : ObjectId("4eae067ab81d17242113d9c5"), "age" : 60 }
db.post.find({age:60}).forEach(printjson); ==select * from post where age=60 ------显示所有age为60的doc
db.post.find({age:60},{name:true}).forEach(printjson) ==select name from post where age=60 ---显示age为60的所有name列
db.post.find().limit(3)==select * from where rownum<=3;
db.post.update({name:"docments"},{$set:{name:"newdoc"}}) ----更新name=”docments“的记录为name=“newdoc”只更新第一行
db.post.remove({name:"newdoc"}) ==delete from post where name="newdoc";
条件操作查询:
db.collection.find({ "field" : { $gt: value } } ); // 大于: field > value
db.collection.find({ "field" : { $lt: value } } ); // 小于: field < value
db.collection.find({ "field" : { $gte: value } } ); // 大于等于: field >= value
db.collection.find({ "field" : { $lte: value } } ); // 小于等于: field <= value
db.collection.find({"field":{$ne:value}});//不等于:field!=value
db.users.find({age : {$all : [20, 30]}});
可以查询出 {name: 'David', age: 26, age: [ 20, 30, 40 ] }
但查询不出 {name: 'David', age: 26, age: [ 20, 7, 9 ] }
db.users.find({age: {$exists: true}}); ---查询存在sge字段的记录
db.post.find({age: {$exists: false}}); --查询不包含age字段的记录
db.post.insert({name:"docments",age:null})
db.post.find({age:null})查询age为null的记录
{ "_id" : ObjectId("4eae0a2eb81d17242113d9cb"), "name" : "docments", "newname" : "newdoc" }
{ "_id" : ObjectId("4eb89d1023c8705b173a80f0"), "name" : "docments", "age" : null }
可以看到没有age的记录也会显示
db.post.find({age:{"$in":[null], "$exists":true}})这样就可以查到age为null的记录
db.post.find({age: {$mod : [ 7, 4 ] } })取模7,余下4的记录 select * from post where mod(age,7)=4
db.post.find({age: {$not:{$mod : [ 7, 4 ]} } }) == select * from post where mod(age,7)!=4
{ "_id" : ObjectId("4eae067ab81d17242113d9c5"), "age" : 60, "name" : "hank" }
db.post.find({name:/doc/i}) #忽略大小写
查询x 的值在2,4,6 范围内的数据
db.things.find({x:{$in: [2,4,6]}});==select * from things where x in(2,4,6);
db.post.find({age:{$nin:[60,70]}})==select * from post where age not in(60,70) --这里其实和null一样的,如果没有age这个key的,也会显示出来
$size 匹配数组里面的个数
{ "_id" : ObjectId("4eb8c06823c8705b173a80fa"), "num" : [ 1, 2, 3 ] }
db.post.find({num:{$size:3}}) ----可以查看到上面的记录
db.post.find().count() ---统计记录数
db.post.find({name:/^d/i}) --匹配name首字母为d的记录,后面加了i,大小写都显示
db.post.find().skip(3).limit(2) --跳过3条记录后,显示前两条
db.post.find()sort({age:-1})--按照age降序排列,升序是1