Mongo DB 2

findOne()

  • findOne(query, projection) : document
  • 规则:
    • 只找到一个匹配的document时,返回它。
    • 找到多个匹配的document时,返回第一个,顺序依照磁盘上的存储顺序。
    • 没找到时,返回null

空查询

> db.aircraft.find()
> db.aircraft.find({})
> db.aircraft.find({},{_id: 0}))
复制代码

推荐总是不要省略query,至少要写{}

查询操作符

  • $eq
  • $ne
  • $in
  • $nin
  • $lt
  • $lte
  • $gt
  • $gte

查询操作符 - 相等

> db.aircraft.find({model: "Boeing 737-900"})

> db.aircraft.find({model: {$eq: "Boeing 737-900"}})
复制代码
> db.aircraft.find({range:5600})
//有数据类型的隐式转换
> db.aircraft.find({range:5600.00})
复制代码
> db.flights.find({departureDate: ISODate("2020-02-20T23:00:00Z")})
> db.flights.find({departureDate: new Date("2020-02-20T23:00:00Z")})
//以下会使用默认时间,12AM
> db.flights.find({departureDate: new Date("2020-02-20")})
复制代码
> db.flights.find({_id:ObjectId("619380ca78d1812dda20336e")})
复制代码
//比较数组
> db.crew.find({skills: ["technical", "management"]})
复制代码
//比较object
> db.crew.find({address:{city:"Berlin", country:"Germany"}})
复制代码

查询操作符 - 不相等

> db.aircraft.find({model: {$ne: "Boeing 737-900"}})
复制代码

查询操作符 - 大于小于

  • 尤其对number和date有用
> db.aircraft.find({capacity: {$gt: 200}})
> db.aircraft.find({capacity: {$lt: 200}})
> db.aircraft.find({capacity: {$gte: 200}})
> db.aircraft.find({capacity: {$lte: 200}})
复制代码
//capacity是integer, 78.11是float, 会做隐式类型转换,78 < 78.11, 所以满足条件
> db.aircraft.find({capacity: {$lt: 78.11}}).pretty()
{
        "_id" : ObjectId("61937f9ae8aef77db553dd52"),
        "code" : "0c3a60d6-8c99-472e-bf23-c1e689c5f6eb",
        "model" : "ATR 72",
        "minRunwayLength" : 1000,
        "range" : 3218,
        "capacity" : 78
}
复制代码
db.flights.find({departureDate: {$gt: new Date("2020-02-20")}})
复制代码

查询操作符 - 不/包含

//哪些document的 model字段有列表中的值?
> db.aircraft.find({model: {$in: ["Airbus A350", "Boeing 747"]}})
复制代码
> db.aircraft.find({model: {$nin: ["Airbus A350", "Boeing 747"]}})
复制代码
//当字段skills本身为数组时,符合条件意味着:这个document的skills数组字段,数组中至少存在一个值,与列表中的至少一个值匹配了
db.crew.find({skills: {$in: ["write code", "test"]}})
复制代码
//正则表达式
//model以A开头
> db.aircraft.find({model: {$in: [/^A/]}})

//model以A开头或者包含737
db.aircraft.find({model: {$in: [/^Air/, /737/]}})
复制代码

猜你喜欢

转载自juejin.im/post/7031453600115064862