非关系型数据库MongoDB入门 (2)

  指定or条件:在集合users中查找出所有status等于”A”或者age小于30的所有文档

    db.users.find({

      $or: [ { status: "A" }, { age: { $lt: 30 } } ]

    })

  指定andor条件:在集合users中查找出status等于”A”并且要么age小于30要么type等于1的所有文档

    db.users.find({

      status: "A",

      $or: [ { age: { $lt: 30 } }, { type: 1 } ]

    })

  嵌入文档查询:

    嵌入文档上的精确匹配:users集合中查找出所有favorities字段只以该种顺序且只包含artist等于"Picasso"food等于 "pizza"的所有内嵌文档

      db.users.find( { favorites: { artist: "Picasso", food: "pizza" } } )

    嵌入文档中字段等于匹配:查询所有favorities字段中含有artist等于"Picasso"(这里可能含有其他的字段)的内嵌文档

      db.users.find( { "favorites.artist": "Picasso" } )

  数组上的查询:(类似于嵌套文档的查询)

    数组上的精确匹配:查询出所有badges字段是一个正好只有有"blue", "black" 这两个这种顺序的元素的数组的所有文档

      db.users.find( { badges: [ "blue", "black" ] } )

    匹配一个数组元素:查找users集合中badges字段数组中包含”black”元素(可能包含其他元素)的所有文档

      db.users.find( { badges: "black" } )

    匹配数组中指定的元素:查找出users集合中badges数组的第一个元素等于”black”的所有文档

      db.users.find( { "badges.0": "black" } )

    指定数组元素多个查询条件单个数组元素满足查询条件需要使用$elemMatch:查找出集合usersfinished数组中至少有一个元素大于15并且小于20的所有文档

      db.users.find( { finished: { $elemMatch: { $gt: 15, $lt: 20 } } } )

    元素组合满足条件:查找出users集合中一个元素大于15的同时另一个元素小于20或者有一个元素同时满足大于15小于20的所有的文档

      db.users.find( { finished: { $gt: 15, $lt: 20 } } )

  嵌入文档数组查询:

    使用数组索引匹配嵌入文档中的字段:查找出points数组第一个文档元素中的points字段小于等于55的所有文档

      db.users.find( { 'points.0.points': { $lte: 55 } } )

    不指定索引匹配字段:查找出points数组中至少有一个嵌入文档的points字段小于或等于55的所有文档。

      db.users.find( { 'points.points': { $lte: 55 } } )

  指定数组文档的多个查询条件:

    单个元素满足查询条件(使用$elemMatch):查询users集合中points数组中至少有一个内嵌文档的points字段小于等于70并且bonus等于20的所有文档

      db.users.find( { points: { $elemMatch: { points: { $lte: 70 }, bonus: 20 } } } )

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxdsy.html