现在的位置: 首页 > 综合 > 正文

mongodb runCommand命令 范围查询 模糊查询

2018年05月10日 ⁄ 综合 ⁄ 共 6701字 ⁄ 字号 评论关闭

> db.persons.find()

{ "_id" : 2, "name" : "33" }
{ "_id" : 3, "name" : "33" }
{ "_id" : 4, "name" : "4" }
{ "_id" : 5, "books" : [ "js", "db", "java" ] }
> ps = db.runCommand({ "findAndModify":"persons", "query":{"name":"33"}, "update
":{"$set":{"name":"333"}}, "new":true })
{
        "value" : {
                "_id" : 2,
                "name" : "333"
        },
        "lastErrorObject" : {
                "updatedExisting" : true,
                "n" : 1
        },
        "ok" : 1
}
> db.persons.find()
{ "_id" : 2, "name" : "333" }
{ "_id" : 3, "name" : "33" }
{ "_id" : 4, "name" : "4" }
{ "_id" : 5, "books" : [ "js", "db", "java" ] }

>

runCommand命令只对查询到第一条记录做更新,大概.


drop掉旧的persons集合,重新准备数据:

> var persons = [{
... name:"jim",
... age:25,
... email:"75431457@qq.com",
... c:89,m:96,e:87,
... country:"USA",
... books:["JS","C++","EXTJS","MONGODB"]
... },
... {
... name:"tom",
... age:25,
... email:"214557457@qq.com",
... c:75,m:66,e:97,
... country:"USA",
... books:["PHP","JAVA","EXTJS","C++"]
... },
... {
... name:"lili",
... age:26,
... email:"344521457@qq.com",
... c:75,m:63,e:97,
... country:"USA",
... books:["JS","JAVA","C#","MONGODB"]
... },
... {
... name:"zhangsan",
... age:27,
... email:"2145567457@qq.com",
... c:89,m:86,e:67,
... country:"China",
... books:["JS","JAVA","EXTJS","MONGODB"
... },
... {
... name:"lisi",
... age:26,
... email:"274521457@qq.com",
... c:53,m:96,e:83,
... country:"China",
... books:["JS","C#","PHP","MONGODB"]
... },
... {
... name:"wangwu",
... age:27,
... email:"65621457@qq.com",
... c:45,m:65,e:99,
... country:"China",
... books:["JS","JAVA","C++","MONGODB"]
... },
... {
... name:"zhaoliu",
... age:27,
... email:"214521457@qq.com",
... c:99,m:96,e:97,
... country:"China",
... books:["JS","JAVA","EXTJS","PHP"]
... },
... {
... name:"piaoyingjun",
... age:26,
... email:"piaoyingjun@uspcat.com",
... c:39,m:54,e:53,
... country:"Korea",
... books:["JS","C#","EXTJS","MONGODB"]
... },
... {
... name:"lizhenxian",
... age:27,
... email:"lizhenxian@uspcat.com",
... c:35,m:56,e:47,
... country:"Korea",
... books:["JS","JAVA","EXTJS","MONGODB"
... },
... {
... name:"lixiaoli",
... age:21,
... email:"lixiaoli@uspcat.com",
... c:36,m:86,e:32,
... country:"Korea",
... books:["JS","JAVA","PHP","MONGODB"]
... },
... {
... name:"zhangsuying",
... age:22,
... email:"zhangsuying@uspcat.com",
... c:45,m:63,e:77,
... country:"Korea",
... books:["JS","JAVA","C#","MONGODB"]
... }]
> for(var i = 0;i<persons.length;i++){
... db.persons.insert(persons[i])
... }
WriteResult({ "nInserted" : 1 })

1.查询age,name,country:

> db.persons.find({},{_id:0,name:1,country:1,age:1})
{ "name" : "jim", "age" : 25, "country" : "USA" }
{ "name" : "tom", "age" : 25, "country" : "USA" }
{ "name" : "lili", "age" : 26, "country" : "USA" }
{ "name" : "zhangsan", "age" : 27, "country" : "China" }
{ "name" : "lisi", "age" : 26, "country" : "China" }
{ "name" : "wangwu", "age" : 27, "country" : "China" }
{ "name" : "zhaoliu", "age" : 27, "country" : "China" }
{ "name" : "piaoyingjun", "age" : 26, "country" : "Korea" }
{ "name" : "lizhenxian", "age" : 27, "country" : "Korea" }
{ "name" : "lixiaoli", "age" : 21, "country" : "Korea" }
{ "name" : "zhangsuying", "age" : 22, "country" : "Korea" }

2.查询出年龄在25到27之间的学生:
> db.persons.find({age:{$gte:25,$lte:27}},{_id:0,name:1,age:1})
{ "name" : "jim", "age" : 25 }
{ "name" : "tom", "age" : 25 }
{ "name" : "lili", "age" : 26 }
{ "name" : "zhangsan", "age" : 27 }
{ "name" : "lisi", "age" : 26 }
{ "name" : "wangwu", "age" : 27 }
{ "name" : "zhaoliu", "age" : 27 }
{ "name" : "piaoyingjun", "age" : 26 }
{ "name" : "lizhenxian", "age" : 27 }

3.查询不是韩国学生的数学成绩及姓名:
> db.persons.find({country:{$ne:"Korea"}},{_id:0,m:1,name:1})
{ "name" : "jim", "m" : 96 }
{ "name" : "tom", "m" : 66 }
{ "name" : "lili", "m" : 63 }
{ "name" : "zhangsan", "m" : 86 }
{ "name" : "lisi", "m" : 96 }
{ "name" : "wangwu", "m" : 65 }
{ "name" : "zhaoliu", "m" : 96 }

$ne表示not equal缩写

$lt <
less than
$lte <=
less than or equal
$ne !=
not equal
$gt > greater than
$gte >=
greater than or equal

全称是我YY的,应该是这个.

4.查询出国籍是USA或China的学生姓名:
> db.persons.find({country:{$in:["USA","China"]}},{_id:0,name:1})
{ "name" : "jim" }
{ "name" : "tom" }
{ "name" : "lili" }
{ "name" : "zhangsan" }
{ "name" : "lisi" }
{ "name" : "wangwu" }
{ "name" : "zhaoliu" }

5.查询出国籍不是USA或China的学生姓名:
> db.persons.find({country:{$nin:["USA","China"]}},{_id:0,name:1})
{ "name" : "piaoyingjun" }
{ "name" : "lizhenxian" }
{ "name" : "lixiaoli" }
{ "name" : "zhangsuying" }

6.查询语文成绩大于85或者英语成绩大于90的学生:
> db.persons.find({$or:[{c:{$gt:85}},{e:{$gt:90}}]},{_id:0,name:1,e:1,c:1})
{ "name" : "jim", "c" : 89, "e" : 87 }
{ "name" : "tom", "c" : 75, "e" : 97 }
{ "name" : "lili", "c" : 75, "e" : 97 }
{ "name" : "zhangsan", "c" : 89, "e" : 67 }
{ "name" : "wangwu", "c" : 45, "e" : 99 }
{ "name" : "zhaoliu", "c" : 99, "e" : 97 }

7.给country是中国的学生加上sex:"m"
> db.persons.update({country:"China"},{$set:{sex:"m"}},false,true)
WriteResult({ "nMatched" : 4, "nUpserted" : 0, "nModified" : 4 })
> db.persons.find({},{_id:0,country:1,sex:1})
{ "country" : "USA" }
{ "country" : "USA" }
{ "country" : "USA" }
{ "country" : "China", "sex" : "m" }
{ "country" : "China", "sex" : "m" }
{ "country" : "China", "sex" : "m" }
{ "country" : "China", "sex" : "m" }
{ "country" : "Korea" }
{ "country" : "Korea" }
{ "country" : "Korea" }
{ "country" : "Korea" }
8.查询sex是null的学生姓名和国籍:
> db.persons.find({sex:{$in:[null]}},{_id:0,name:1,country:1})
{ "name" : "jim", "country" : "USA" }
{ "name" : "tom", "country" : "USA" }
{ "name" : "lili", "country" : "USA" }
{ "name" : "piaoyingjun", "country" : "Korea" }
{ "name" : "lizhenxian", "country" : "Korea" }
{ "name" : "lixiaoli", "country" : "Korea" }
{ "name" : "zhangsuying", "country" : "Korea" }

9.查询名字中有li的学生信息:
> db.persons.find({name:/li/},{_id:0,name:1})
{ "name" : "lili" }
{ "name" : "lisi" }
{ "name" : "zhaoliu" }
{ "name" : "lizhenxian" }
{ "name" : "lixiaoli" }

10.$nin只能用在集合上,$not可以用在任何地方
查询名字中不存在li的学生姓名:
> db.persons.find({name:{$not:/li/}},{_id:0,name:1})
{ "name" : "jim" }
{ "name" : "tom" }
{ "name" : "zhangsan" }
{ "name" : "wangwu" }
{ "name" : "piaoyingjun" }
{ "name" : "zhangsuying" }

11.查询喜欢"JS"和"MONGODB"的学生姓名:
> db.persons.find({books:{$all:["JS","MONGODB"]}},{_id:0,name:1})
{ "name" : "jim" }
{ "name" : "lili" }
{ "name" : "zhangsan" }
{ "name" : "lisi" }
{ "name" : "wangwu" }
{ "name" : "piaoyingjun" }
{ "name" : "lizhenxian" }
{ "name" : "lixiaoli" }
{ "name" : "zhangsuying" }

12.查询喜欢的书中第二本是"JAVA"的学生姓名:
> db.persons.find({"books.1":"JAVA"},{_id:0,name:1})
{ "name" : "tom" }
{ "name" : "lili" }
{ "name" : "zhangsan" }
{ "name" : "wangwu" }
{ "name" : "zhaoliu" }
{ "name" : "lizhenxian" }
{ "name" : "lixiaoli" }
{ "name" : "zhangsuying" }

13.查询喜欢的书的数量是4的学生姓名:
> db.persons.find({books:{$size:4}},{_id:0,name:1})
{ "name" : "jim" }
{ "name" : "tom" }
{ "name" : "lili" }
{ "name" : "zhangsan" }
{ "name" : "lisi" }
{ "name" : "wangwu" }
{ "name" : "zhaoliu" }
{ "name" : "piaoyingjun" }
{ "name" : "lizhenxian" }
{ "name" : "lixiaoli" }
{ "name" : "zhangsuying" }

14.给所有文档增加size:4属性,给jim加一本喜欢的书,并使size+1

> db.persons.update({},{$set:{size:4}},false,true)
WriteResult({ "nMatched" : 11, "nUpserted" : 0, "nModified" : 11 })
> db.persons.find({books:{$size:4}},{_id:0,name:1,size:1})
{ "name" : "jim", "size" : 4 }
{ "name" : "tom", "size" : 4 }
{ "name" : "lili", "size" : 4 }
{ "name" : "zhangsan", "size" : 4 }
{ "name" : "lisi", "size" : 4 }
{ "name" : "wangwu", "size" : 4 }
{ "name" : "zhaoliu", "size" : 4 }
{ "name" : "piaoyingjun", "size" : 4 }
{ "name" : "lizhenxian", "size" : 4 }
{ "name" : "lixiaoli", "size" : 4 }
{ "name" : "zhangsuying", "size" : 4 }
> db.persons.update({name:"jim"},{$push:{books:"ORACLE"},$inc:{size:1}},false,tr
ue)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

15,查询jim喜欢的书的数量:

> var persons = db.persons.find({name:"jim"})
> while(persons.hasNext()){
... obj = persons.next();
... print(obj.books.length)
... }
5

【上篇】
【下篇】

抱歉!评论已关闭.