mongodb的一些知识
博客专区 > Tony2015 的博客 > 博客详情
mongodb的一些知识
Tony2015 发表于3年前
mongodb的一些知识
  • 发表于 3年前
  • 阅读 24
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

1.指定等于查询条件
 
要指定相等查询条件,使用查询文档 { <field>: <value> } 查询所有包含 <field> 字段并且值等于 <value> 的集合
下面的示例从 inventory 集合中检索所有字段 type 值为的文档 snacks
 
db.inventory.find( { type:  "snacks"   } );
 
2.在同字段上使用相等条件查询时更宁愿使用 $ in   查询操作符不用$ or
  inventory 集合中 type 字段值为  'food'   或  'snacks'   的所有文档:
 
db.inventory.find( { type: { $ in : [  'food' 'snacks'   ] } }
 
3.指定与查询条件
复合查询可指定文档中多个字段作为查询条件。使用  AND   逻辑连接复合查询的条件子句,以筛选出集合中所有符合查询条件的文档
查询选取所有 type 字段等于  'food'   并且 price 字段值小于 9.95 的文档
 
db.inventory.find( { type:  'food' , price: { $lt: 9.95 } } )
 
4.指定或查询条件
使用 $ or   操作符,可通过  OR   逻辑连接每个子句以指定一个复合查询,查询将筛选集合中至少匹配一个查询条件的文档
查询文档筛选出集合中 qty 字段值大于 ($gt) 100 或 price 字段小于 ($lt) 9.95 的所有文档:
 
db.inventory.find(
    {
      $ or : [ { qty: { $gt: 100 } }, { price: { $lt: 9.95 } } ]
    }
)
 
5.同时指定 与和或查询条件
复合查询文档筛选出集合中 type 字段值为  'food'
  并且 qty 字段的值大于 ($gt) 100 或  price 的值小于 ($lt) ``9.95``的所有文档:
db.inventory.find(
    {
      type:  'food' ,
      $ or : [ { qty: { $gt: 100 } }, { price: { $lt: 9.95 } } ]
    }
)

6.内嵌文档
a.精确匹配 用查询文档 { <field>: <value> },其中 <value> 是用于匹配的文档。相等匹配要求 <value> 文档与内嵌文档 完全 匹配,包括字段顺序。
在如下示例中,查询将匹配 producer 字段为内嵌文档,并 包含 company 和 address 字段(字段顺序相同),且值分别为 'ABC123' 与 '123 Street' 的所有文档

db.inventory.find(
    {
      producer:
        {
          company: 'ABC123',
          address: '123 Street'
        }
    }
)

b.相等匹配
下面示例中,查询使用 dot notation 匹配 producer 字段为内嵌文档,该内嵌文档中包含 company 字段(可包含其他字段)且值为 'ABC123' 的所有文档:


db.inventory.find( { 'producer.company': 'ABC123' } )




7.数组
考虑集合 inventory 包含如下文档
{ _id: 5, type: "food", item: "aaa", ratings: [ 5, 8, 9 ] }
{ _id: 6, type: "food", item: "bbb", ratings: [ 5, 9 ] }
{ _id: 7, type: "food", item: "ccc", ratings: [ 9, 5, 8 ] }



数组的精确匹配
下面示例将筛选出 ratings 字段为数组,包含 5, 8, 9 三个元素并且元素顺序符合该顺序的所有文档:
db.inventory.find( { ratings: [ 5, 8, 9 ] } )

{ "_id" : 5, "type" : "food", "item" : "aaa", "ratings" : [ 5, 8, 9 ] }



匹配数组元素
相等匹配可以指定数组中单一元素进行匹配。这些相等匹配将匹配包含至少一个元素等于指定值的数组
下面示例查询数组字段 ratings 中元素之一为 5 的所有文档
db.inventory.find( { ratings: 5 } )
操作将返回如下文档:
{ "_id" : 5, "type" : "food", "item" : "aaa", "ratings" : [ 5, 8, 9 ] }
{ "_id" : 6, "type" : "food", "item" : "bbb", "ratings" : [ 5, 9 ] }
{ "_id" : 7, "type" : "food", "item" : "ccc", "ratings" : [ 9, 5, 8 ] }


匹配数组指定元素
在下面示例中,查询使用 dot notation 匹配数组字段 ratings 的第一个元素为 5 的所有文档:
db.inventory.find( { 'ratings.0': 5 } )
操作将返回如下文档:

{ "_id" : 5, "type" : "food", "item" : "aaa", "ratings" : [ 5, 8, 9 ] }
{ "_id" : 6, "type" : "food", "item" : "bbb", "ratings" : [ 5, 9 ] }
满足条件的元素组合
下面示例将查询 ratings 中包含某些元素组合满足查询条件的文档;比如,一个元素满足大于 5 的条件,另外元素满足小于 9 的条件,或一个元素同时满足两个条件;
 db.inventory.find( { ratings: { $gt: 5, $lt: 9 } } )

 操作将返回如下文档
{ "_id" : 5, "type" : "food", "item" : "aaa", "ratings" : [ 5, 8, 9 ] }
{ "_id" : 6, "type" : "food", "item" : "bbb", "ratings" : [ 5, 9 ] }
{ "_id" : 7, "type" : "food", "item" : "ccc", "ratings" : [ 9, 5, 8 ] }

8.限制查询返回的字段
对于包含数组的字段,MongoDB提供了如下的投影操作符: $elemMatch$slice 以及 $
{ "_id" : 5, "type" : "food", "item" : "aaa", "ratings" : [ 5, 8, 9 ] }
下面的操作使用 $slice 映射操作符以仅仅返回 ratings 数组里的前两个元素。
db.inventory.find( { _id: 5 }, { ratings: { $slice: 2 } }


































































共有 人打赏支持
粉丝 2
博文 26
码字总数 28618
×
Tony2015
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: