美文网首页
MongoDB 入门系列(七)

MongoDB 入门系列(七)

作者: 郁南 | 来源:发表于2020-07-02 23:42 被阅读0次

find查找

简单查询

  1. 新建mongodb-15.js,输入以下代码
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');
  1. 使用find查找
    分别使用以下两个查询条件查找
db.workmate.find(
    {"skill.skillOne":"HTML+CSS"},
    {name:true,"skill.skillOne":true,_id:false}
)

// 得到下面内容
{ "name" : "JSPang", "skill" : { "skillOne" : "HTML+CSS" } }
{ "name" : "ShengLei", "skill" : { "skillOne" : "HTML+CSS" } }
{ "name" : "JSPang", "skill" : { "skillOne" : "HTML+CSS" } }
{ "name" : "ShengLei", "skill" : { "skillOne" : "HTML+CSS" } }
{ "name" : "LiangPeng", "skill" : { "skillOne" : "HTML+CSS" } }
{ "name" : "HouFei", "skill" : { "skillOne" : "HTML+CSS" } }
{ "name" : "JiaPeng", "skill" : { "skillOne" : "HTML+CSS" } }
{ "name" : "LiJia", "skill" : { "skillOne" : "HTML+CSS" } }
db.workmate.find(     
    {"skill.skillOne":"HTML+CSS"},    
    {"skill.skillOne":true,_id:false} 
)

// 得到下面内容
{ "skill" : { "skillOne" : "HTML+CSS" } }
{ "skill" : { "skillOne" : "HTML+CSS" } }
{ "skill" : { "skillOne" : "HTML+CSS" } }
{ "skill" : { "skillOne" : "HTML+CSS" } }
{ "skill" : { "skillOne" : "HTML+CSS" } }
{ "skill" : { "skillOne" : "HTML+CSS" } }
{ "skill" : { "skillOne" : "HTML+CSS" } }
{ "skill" : { "skillOne" : "HTML+CSS" } }

可以得出find的第一个参数是查询条件,第二个参数是查找的包含字段所在层级,true为包含,默认false

其他参数:
不等修饰符

  • 小于($lt):英文全称less-than
  • 小于等于($lte):英文全称less-than-equal
  • 大于($gt):英文全称greater-than
  • 大于等于($gte):英文全称greater-than-equal
  • 不等于($ne):英文全称not-equal
    比如要查找年龄小于30大于25岁的人员,可以这样
> db.workmate.find(
     {age:{$lte:30,$gte:25}},
     {name:true,age:true,"skill.skillOne":true,_id:false}
 )
{ "name" : "ShengLei", "age" : 30, "skill" : { "skillOne" : "HTML+CSS" } }
{ "name" : "XiaoWang", "age" : 25, "skill" : { "skillOne" : "PhotoShop" } }
{ "name" : "LiangPeng", "age" : 28, "skill" : { "skillOne" : "HTML+CSS" } }
{ "name" : "HouFei", "age" : 25, "skill" : { "skillOne" : "HTML+CSS" } }
{ "name" : "JiaPeng", "age" : 29, "skill" : { "skillOne" : "HTML+CSS" } }
{ "name" : "LiJia", "age" : 26, "skill" : { "skillOne" : "HTML+CSS" } }

日期查找

> var startDate= new Date('01/01/2018');
> db.workmate.find(
     {regeditTime:{$gt:startDate}},
     {name:true,age:true,"skill.skillOne":true,_id:false}
 )
{ "name" : "JSPang", "age" : 33, "skill" : { "skillOne" : "HTML+CSS" } }
{ "name" : "ShengLei", "age" : 30, "skill" : { "skillOne" : "HTML+CSS" } }
{ "name" : "MinJie", "age" : 21, "skill" : { "skillOne" : "PhotoShop" } }
{ "name" : "JSPang", "age" : 33, "skill" : { "skillOne" : "HTML+CSS" } }
{ "name" : "ShengLei", "age" : 31, "skill" : { "skillOne" : "HTML+CSS" } }
{ "name" : "MinJie", "age" : 18, "skill" : { "skillOne" : "PhotoShop" } }
{ "name" : "XiaoWang", "age" : 25, "skill" : { "skillOne" : "PhotoShop" } }
{ "name" : "LiangPeng", "age" : 28, "skill" : { "skillOne" : "HTML+CSS" } }
{ "name" : "HouFei", "age" : 25, "skill" : { "skillOne" : "HTML+CSS" } }
{ "name" : "LiuYan", "age" : 35, "skill" : { "skillOne" : "PhotoShop" } }
{ "name" : "DingLu", "age" : 20, "skill" : { "skillOne" : "PhotoShop" } }
{ "name" : "JiaPeng", "age" : 29, "skill" : { "skillOne" : "HTML+CSS" } }
{ "name" : "LiJia", "age" : 26, "skill" : { "skillOne" : "HTML+CSS" } }

多条件查询

$in修饰符
in修饰符可以轻松解决一键多值的查询情况

db.workmate.find({age:{$in:[25,33]}},
    {name:1,"skill.skillOne":1,age:1,_id:0}
)

$or修饰符
它用来查询多个键值的情况

db.workmate.find({$or:[
    {age:{$gte:30}},
    {"skill.skillThree":'PHP'}
]},
    {name:1,"skill.skillThree":1,age:1,_id:0}
)

$and修饰符
它用来查找几个key值都满足的情况

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查找 简单查询 新建mongodb-15.js,输入以下代码 使用find查找分别使用以下两个查询条件查找...

  • MonogoDB入门教程01

    注:本系列教程是自己学习的记录,内容来至 菜鸟教程MongoDB入门教程01MongoDB入门教程02MongoD...

  • MongoDB入门教程03

    注:本系列教程是自己学习的记录,内容来至 菜鸟教程MongoDB入门教程01MongoDB入门教程02MongoD...

  • MongoDB入门教程02

    注:本系列教程是自己学习的记录,内容来至 菜鸟教程MongoDB入门教程01MongoDB入门教程02MongoD...

  • MongoDB入门教程04

    注:本系列教程是自己学习的记录,内容来至 菜鸟教程MongoDB入门教程01MongoDB入门教程02MongoD...

  • MongoDB入门教程05

    注:本系列教程是自己学习的记录,内容来至 菜鸟教程MongoDB入门教程01MongoDB入门教程02MongoD...

  • SpringBoot入门建站全系列(二十六)Mongodb非关系

    SpringBoot入门建站全系列(二十六)Mongodb非关系型数据库的使用 一、概述 MongoDB 是一个基...

  • 《开发者头条》每日精选(8-4)

    系列文章:MongoDB 从入门到精通 codefrom.com by 狗狗侠 from booooom 大数据全...

  • MongoDB教程(初识篇)

    目录一、定义二、安装 系列教程MongoDB教程(入门篇) 一、定义 1、MongoDB是什么 一个基于分布式文件...

  • MongoDB 新手入门 - Aggregation

    本文是 MongoDB 新手入门 系列的第二篇,在本文中,我们将会讲解 MongoDB 的聚合框架,在看完本文后,...

网友评论

      本文标题:MongoDB 入门系列(七)

      本文链接:https://www.haomeiwen.com/subject/qondqktx.html