摘要:返回内容查询出来后显示的结果样式,可以用和控制是否显示。修饰符文件使用进行链接对应的集合声明变量,并把查询结果赋值给利用游标的进行循环输出结果。到此的基础操作就结束了,但是我们还没有结束呢,下一节我们会用配合使用哦
find查询操作是我们平时再开发中最常用的,也是重中之重。
find基本操作符
// 批量插入数据 var workmate1={ name:"JSPang", age:33, sex:1, job:"前端", skill:{ skillOne:"HTML+CSS", skillTwo:"JavaScript", skillThree:"PHP" }, regeditTime:new Date(), interest:[] } var workmate2={ name:"ShengLei", age:31, sex:1, job:"JAVA后端", skill:{ skillOne:"HTML+CSS", skillTwo:"J2EE", skillThree:"PPT" }, regeditTime:new Date(), interest:[] } var workmate3={ name:"MinJie", age:18, sex:0, job:"UI", skill:{ skillOne:"PhotoShop", skillTwo:"UI", skillThree:"PPT" }, regeditTime:new Date(), interest:[] } var workmate4={ name:"XiaoWang", age:25, sex:1, job:"UI", skill:{ skillOne:"PhotoShop", skillTwo:"UI", skillThree:"PPT" }, regeditTime:new Date(), interest:[] } var workmate5={ name:"LiangPeng", age:28, sex:1, job:"前端", skill:{ skillOne:"HTML+CSS", skillTwo:"JavaScript", }, regeditTime:new Date(), interest:[] } var workmate6={ name:"HouFei", age:25, sex:0, job:"前端", skill:{ skillOne:"HTML+CSS", skillTwo:"JavaScript", }, regeditTime:new Date(), interest:[] } var workmate7={ name:"LiuYan", age:35, sex:0, job:"美工", skill:{ skillOne:"PhotoShop", skillTwo:"CAD", }, regeditTime:new Date(), interest:[] } var workmate8={ name:"DingLu", age:20, sex:0, job:"美工", skill:{ skillOne:"PhotoShop", skillTwo:"CAD", }, regeditTime:new Date(), interest:[] } var workmate9={ name:"JiaPeng", age:29, sex:1, job:"前端", skill:{ skillOne:"HTML+CSS", skillTwo:"JavaScript", skillThree:"PHP" }, regeditTime:new Date(), interest:[] } var workmate10={ name:"LiJia", age:26, sex:0, job:"前端", skill:{ skillOne:"HTML+CSS", skillTwo:"JavaScript", skillThree:"PHP" }, regeditTime:new Date(), interest:[] } var db=connect("company"); var workmateArray=[workmate1,workmate2,workmate3,workmate4,workmate5,workmate6,workmate7,workmate8,workmate9,workmate10]; db.workmate.insert(workmateArray); print("[SUCCESS]:The data was inserted successfully");
// 启动数据库 PS D:myweb odemongodb 1> mongo // 启动mongo MongoDB shell version v3.4.10 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.10 Server has startup warnings: 2018-04-01T17:32:00.547+0800 I CONTROL [initandlisten] 2018-04-01T17:32:00.548+0800 I CONTROL [initandlisten] ** WARNIN G: Access control is not enabled for the database. 2018-04-01T17:32:00.548+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricte d. 2018-04-01T17:32:00.548+0800 I CONTROL [initandlisten] > load("./demo.js") // 加载js文件批量插入 connecting to: mongodb://127.0.0.1:27017/company MongoDB server version: 3.4.10 [SUCCESS]:The data was inserted successfully true >
// 我们需要查找技能一中会HTML 和 CSS 的所有人 db.workmate.find({"skill.skillOne": "HTML+CSS"});
筛选字段
// 如我们只需要姓名和技能 db.workmate.find({"skill.skillOne": "HTML+CSS"}, { name: true, "skill.skillOne": true}); // find()的第二个参数用于指定要返回的字段 > db.workmate.find({"skill.skillOne": "HTML+CSS"}, { name: true, "skill.skillOne": true}); { "_id" : ObjectId("5ac0ba2d945d6de2ecdcd0ec"), "name" : "JSPang", "skill" : { "skillOne" : "HTML+CSS" } } { "_id" : ObjectId("5ac0ba2d945d6de2ecdcd0ed"), "name" : "ShengLei", "skill" : { "skillOne" : "HTML+CSS" } } { "_id" : ObjectId("5ac0ba2d945d6de2ecdcd0f0"), "name" : "LiangPeng", "skill" : { "skillOne" : "HTML+CSS" } } { "_id" : ObjectId("5ac0ba2d945d6de2ecdcd0f1"), "name" : "HouFei", "skill" : { "skillOne" : "HTML+CSS" } } { "_id" : ObjectId("5ac0ba2d945d6de2ecdcd0f4"), "name" : "JiaPeng", "skill" : { "skillOne" : "HTML+CSS" } } { "_id" : ObjectId("5ac0ba2d945d6de2ecdcd0f5"), "name" : "LiJia", "skill" : { "skillOne" : "HTML+CSS" } } > // 如果我们不想要_id db.workmate.find( {"skill.skillOne":"HTML+CSS"}, { name:true, "skill.skillOne":true, _id:false } );
其他查询修饰符
不等修饰符
小于($lt):英文全称less-than
小于等于($lte):英文全称less-than-equal
大于($gt):英文全称greater-than
大于等于($gte):英文全称greater-than-equal
不等于($ne):英文全称not-equal
db.workmate.find( {age:{$lte:30,$gte:25}}, {name:true,age:true,"skill.skillOne":true,_id:false} )
日期查找
var startDate= new Date("01/01/2018"); db.workmate.find( {regeditTime:{$gt:startDate}}, {name:true,age:true,"skill.skillOne":true,_id:false} )
find多条件查询
$in
db.workmate.find({age:{$in:[25,33]}}, {name:1,"skill.skillOne":1,age:1,_id:0} ) // 查询年龄是 25 和 33 的
$or
db.workmate.find({$or:[ {age:{$gte:30}}, {"skill.skillThree":"PHP"} ]}, {name:1,"skill.skillThree":1,age:1,_id:0} )
$and
db.workmate.find({$and:[ {age:{$gte:30}}, {"skill.skillThree":"PHP"} ]}, {name:1,"skill.skillThree":1,age:1,_id:0} )
$not
db.workmate.find({ age:{ $not:{ $lte:30, $gte:20 } } }, {name:1,"skill.skillOne":1,age:1,_id:0} )
更多请查看下面的文档
Mongodb 重温之路(二)
find 数组查询
// 数据中增加了一个数组 var workmate1={ name:"JSPang", age:33, sex:1, job:"前端", skill:{ skillOne:"HTML+CSS", skillTwo:"JavaScript", skillThree:"PHP" }, regeditTime:new Date(), interest:["看电影","看书","吃美食","钓鱼","旅游"] } var workmate2={ name:"ShengLei", age:31, sex:1, job:"JAVA后端", skill:{ skillOne:"HTML+CSS", skillTwo:"J2EE", skillThree:"PPT" }, regeditTime:new Date(), interest:["篮球","看电影","做饭"] } var workmate3={ name:"MinJie", age:18, sex:0, job:"UI", skill:{ skillOne:"PhotoShop", skillTwo:"UI", skillThree:"PPT" }, regeditTime:new Date(), interest:["做饭","画画","看电影"] } var workmate4={ name:"XiaoWang", age:25, sex:1, job:"UI", skill:{ skillOne:"PhotoShop", skillTwo:"UI", skillThree:"PPT" }, regeditTime:new Date(), interest:["写代码","篮球","画画"] } var workmate5={ name:"LiangPeng", age:28, sex:1, job:"前端", skill:{ skillOne:"HTML+CSS", skillTwo:"JavaScript", }, regeditTime:new Date(), interest:["玩游戏","写代码","做饭"] } var workmate6={ name:"HouFei", age:25, sex:0, job:"前端", skill:{ skillOne:"HTML+CSS", skillTwo:"JavaScript", }, regeditTime:new Date(), interest:["化妆","读书","做饭"] } var workmate7={ name:"LiuYan", age:35, sex:0, job:"美工", skill:{ skillOne:"PhotoShop", skillTwo:"CAD", }, regeditTime:new Date(), interest:["画画","聚会","看电影"] } var workmate8={ name:"DingLu", age:20, sex:0, job:"美工", skill:{ skillOne:"PhotoShop", skillTwo:"CAD", }, regeditTime:new Date(), interest:["美食","看电影","做饭"] } var workmate9={ name:"JiaPeng", age:29, sex:1, job:"前端", skill:{ skillOne:"HTML+CSS", skillTwo:"JavaScript", skillThree:"PHP" }, regeditTime:new Date(), interest:["写代码","篮球","游泳"] } var workmate10={ name:"LiJia", age:26, sex:0, job:"前端", skill:{ skillOne:"HTML+CSS", skillTwo:"JavaScript", skillThree:"PHP" }, regeditTime:new Date(), interest:["玩游戏","美食","篮球"] } var db=connect("company"); var workmateArray=[workmate1,workmate2,workmate3,workmate4,workmate5,workmate6,workmate7,workmate8,workmate9,workmate10]; db.workmate.insert(workmateArray); print("[SUCCESS]:The data was inserted successfully");
基本数组查询
// 比如现在我们知道了一个人的爱好是"画画","聚会","看电影",但我们不知道是谁,这时候我们就可以使用最简单的数组查询 > db.workmate.find({interest: ["画画","聚会","看电影"]}, { ... name: true, interest: true, age: true, _id: 0 ... }); { "name" : "LiuYan", "age" : 35, "interest" : [ "画画", "聚会", "看电影" ] }
// 想看兴趣中含有看电影的员工 > db.workmate.find({interest: "看电影"}, {name: 1, _id: 0, interest: 1}) { "name" : "JSPang", "interest" : [ "看电影", "看书", "吃美食", "钓鱼", "旅游" ] } { "name" : "ShengLei", "interest" : [ "篮球", "看电影", "做饭" ] } { "name" : "MinJie", "interest" : [ "做饭", "画画", "看电影" ] } { "name" : "LiuYan", "interest" : [ "画画", "聚会", "看电影" ] } { "name" : "DingLu", "interest" : [ "美食", "看电影", "做饭" ] }
$all-数组多项查询
// 要查询出喜欢看电影和看书的人员信息, > db.workmate.find( ... {interest: {$all : ["看电影", "看书"]}}, ... {name: 1, age: 1, _id: 0, interest: true} ... ); { "name" : "JSPang", "age" : 33, "interest" : [ "看电影", "看书", "吃美食", "钓鱼", "旅游" ] } >
数组的$in或者查询
// 看电影和看书有一样就行了 > db.workmate.find( ... {interest:{$in:["看电影","看书"]}}, ... {name:1,interest:1,age:1,_id:0} ... ) { "name" : "JSPang", "age" : 33, "interest" : [ "看电影", "看书", "吃美食", "钓鱼", "旅游" ] } { "name" : "ShengLei", "age" : 31, "interest" : [ "篮球", "看电影", "做饭" ] } { "name" : "MinJie", "age" : 18, "interest" : [ "做饭", "画画", "看电影" ] } { "name" : "LiuYan", "age" : 35, "interest" : [ "画画", "聚会", "看电影" ] } { "name" : "DingLu", "age" : 20, "interest" : [ "美食", "看电影", "做饭" ] } >
$size-数组个数查询
// 查询数组长度 db.workmate.find( {interest:{$size:5}}, {name:1,interest:1,age:1,_id:0} )
$slice-显示选项
// 比如我们现在想显示每个人兴趣的前两项,而不是把每个人所有的兴趣都显示出来。 > db.workmate.find( ... {}, ... {name:1,interest:{$slice:2},age:1,_id:0} ... ) { "name" : "JSPang", "age" : 33, "interest" : [ "看电影", "看书" ] } { "name" : "ShengLei", "age" : 31, "interest" : [ "篮球", "看电影" ] } { "name" : "MinJie", "age" : 18, "interest" : [ "做饭", "画画" ] } { "name" : "XiaoWang", "age" : 25, "interest" : [ "写代码", "篮球" ] } { "name" : "LiangPeng", "age" : 28, "interest" : [ "玩游戏", "写代码" ] } { "name" : "HouFei", "age" : 25, "interest" : [ "化妆", "读书" ] } { "name" : "LiuYan", "age" : 35, "interest" : [ "画画", "聚会" ] } { "name" : "DingLu", "age" : 20, "interest" : [ "美食", "看电影" ] } { "name" : "JiaPeng", "age" : 29, "interest" : [ "写代码", "篮球" ] } { "name" : "LiJia", "age" : 26, "interest" : [ "玩游戏", "美食" ] } > // 如果我们想显示兴趣的最后一项,可以直接使用slice:-1,来进行查询。 > db.workmate.find( ... {}, ... {name:1,interest:{$slice:-1},age:1,_id:0} ... ) { "name" : "JSPang", "age" : 33, "interest" : [ "旅游" ] } { "name" : "ShengLei", "age" : 31, "interest" : [ "做饭" ] } { "name" : "MinJie", "age" : 18, "interest" : [ "看电影" ] } { "name" : "XiaoWang", "age" : 25, "interest" : [ "画画" ] } { "name" : "LiangPeng", "age" : 28, "interest" : [ "做饭" ] } { "name" : "HouFei", "age" : 25, "interest" : [ "做饭" ] } { "name" : "LiuYan", "age" : 35, "interest" : [ "看电影" ] } { "name" : "DingLu", "age" : 20, "interest" : [ "做饭" ] } { "name" : "JiaPeng", "age" : 29, "interest" : [ "游泳" ] } { "name" : "LiJia", "age" : 26, "interest" : [ "篮球" ] } >
find参数使用
find方法的第一个参数(query)和第二个参数(fields)
find参数:
query:这个就是查询条件,MongoDB默认的第一个参数。
fields:(返回内容)查询出来后显示的结果样式,可以用true和false控制是否显示。
limit:返回的数量,后边跟数字,控制每次查询返回的结果数量。
skip:跳过多少个显示,和limit结合可以实现分页。
sort:排序方式,从小到大排序使用1,从大到小排序使用-1。
$where修饰符
db.workmate.find( {$where:"this.age>30"}, {name:true,age:true,_id:false} )
js文件使用find()
var db = connect("company") //进行链接对应的集合collections var result = db.workmate.find() //声明变量result,并把查询结果赋值给result //利用游标的hasNext()进行循环输出结果。 while(result.hasNext()){ printjson(result.next()) //用json格式打印结果 }
var db = connect("company") //进行链接对应的集合collections var result = db.workmate.find() //声明变量result,并把查询结果赋值给result //利用游标的hasNext()进行循环输出结果。 result.forEach(function(result){ printjson(result) })
到此mongoDB的基础操作就结束了,但是我们还没有结束呢,下一节我们会用nodejs配合Mongodb使用哦~~
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/19216.html
摘要:本文内容主要来自的学习,学习笔记基于个人理解对原书部分内容进行调整。如果需要练习相关命令行工具可直接阅读本学习笔记。笔者测试数据库版本较早,但文中涉及的所有概念及命令行工具基本适用于所有版本。二准备安装和运行服务在学习之前,需要安装环境。 感谢 Karl Seguin 编写的 The Little MongoDB Book 这本 MongoDB 入门书。 本文内容主要来自「The Li...
摘要:本文内容主要来自的学习,学习笔记基于个人理解对原书部分内容进行调整。如果需要练习相关命令行工具可直接阅读本学习笔记。笔者测试数据库版本较早,但文中涉及的所有概念及命令行工具基本适用于所有版本。二准备安装和运行服务在学习之前,需要安装环境。 感谢 Karl Seguin 编写的 The Little MongoDB Book 这本 MongoDB 入门书。 本文内容主要来自「The Li...
摘要:接上篇文章,这里继续学习高级理论。实战演练我们来写一个返回某玩家的整个僵尸军团的函数。但这样每做一笔交易,都会改变僵尸军团的秩序。在这里开始五可支付截至目前,我们只接触到很少的函数修饰符。 接上篇文章,这里继续学习Solidity高级理论。 一、深入函数修饰符 接下来,我们将添加一些辅助方法。我们为您创建了一个名为 zombiehelper.sol 的新文件,并且将 zombiefee...
阅读 3225·2021-11-24 09:39
阅读 3157·2021-10-21 09:38
阅读 2396·2019-08-29 15:28
阅读 3737·2019-08-26 12:23
阅读 2615·2019-08-26 12:19
阅读 1358·2019-08-23 12:44
阅读 2125·2019-08-23 12:02
阅读 993·2019-08-22 17:05