数据库

 首页 > 数据库 > MongoDB > MongoDB基本查询使用方法

MongoDB基本查询使用方法

分享到:
【字体:
导读:
         摘要:精确匹配单个键值对:{age:28},返回age值为28的所有文档。多个键值对:{username:tom,age:28},将多个查询条件组合在一起,等同于:条件1AND条件2AND…AND条件N。该查询文档返回:用户名为tom,并且年龄为28的所有文档。条件匹配范围...

MongoDB基本查询使用方法

精确匹配

单个键值对:{"age":28}, 返回"age"值为28的所有文档。

多个键值对:{"username":"tom", "age":28},将多个查询条件组合在一起,等同于:条件1 AND 条件2 AND …AND 条件N。该查询文档返回:用户名为tom,并且年龄为28的所有文档。

条件匹配 范围

“$ne” 
“不相等”操作符,对应:!=
如用户名不是tom的查询文档是: {"username": {"$ne":"tom"}}

OR查询

$in
用来查询一个键对应的多个值,对单个键做OR查询。
如:活动中奖号码是1,4,8,要找出全部这些中奖数据的查询文档是:{"ticket_no":{"$in":[1, 4, 8]}}

$nin
相对地,$nin返回与数组中值都不符合的数据,如找出没有中奖的数据的查询文档是:{ "ticket_no": {"$nin": [1, 4, 8]} }。

$or
用来查询多个键的任意值,会更通用一些。它接受一个所有可能条件的数组作为参数,也可以含有其他条件句。如:
{
    "$or": [
        {
            "ticket_no":{
                "$in":[1, 4, 8]
            }
        },
        {
            "winner":true
        }
    ]
}
$or的第一个条件应尽可能地匹配更多的文档,这样才最有效。

$not

$not是元条件句,可以用在任何其他条件之上,表取反。
如:查询文档:{"value":{"$mod":[5,1]}},符合条件的值有:1, 6, 11等。
如果想要查找值为2, 3, 4, 5, 7, 8, 9, 10, 12等的数据就可以用:{"value":{"$not":{"$mod":[5,1]}}}。

$exists

用来查询文档中某个键是否存在,如找出不存在键名为key1的文档:{"key1":{"$exists":false}};
相反,{"key1":{"$exists":true}}表示存在key1键。

类型匹配 Null

查询文档{"x":null},执行后返回:包含有键值对“x”:null的文档,以及不存在x键的文档。

正则表达式

PCRE支持的正则表达式都能被MongoDB所接受。
如查询文档{key1”} 都会返回。
可用于SQL中的like场景。

查询数组 数组中每一个元素都是整个键的值。如有文档:
文档1:{"fruit":["apple", "pear", "peach"]},
文档2:{"fruit":["peach", "banana", "apple"]},
文档3:{"fruit":["orange", "banana", "apple"]},

单个元素匹配
若查询文档为:{"fruit":"apple"},文档1,2,3都会被成功匹配。

多个元素匹配
需要用到$all条件句了,若查询文档为:{"fruit":{"$all":["apple","peach"]}},则文档1,2会被匹配,与元素顺序无关。

精确匹配
若查询文档为:{"fruit":["apple", "pear", "peach"]},则只匹配文档1,对于缺少或冗余,以及顺序不一致的都不会匹配到。

下标匹配
采用key.index方式,数组下标从0开始。如查询文档:{"fruit.2":"apple"},则文档2,3被匹配。

长度匹配
若查询文档为:{"fruit":{"$size":3}},表示查询长度为3的数组,文档1,2,3都会被匹配。

内嵌文档的查询

$elemMatch
当需要对一个内嵌文档的多个键操作时使用。
如有文档:
{
  "comments": [
    {
      "name": "Tom",
      "score": 3,
      "comment": "bad"
    },
    {
      "name": "Jim",
      "score": 6,
      "comment": "good"
    }
  ]
}
要查找Tom评分大于5的评论文档,只能这样: {"comments":{"$elemMatch":{"name":"Tom","score":{"$gt":5}}}}
而不能: {"comments":{"name":"Tom","score":{"$gt":5}}},不能匹配"comment"键了。
或 {"comments.name":"Tom","comments.score":{"$gt":5}},匹配的不是同一条评论了。

MongoDB基本查询使用方法
分享到:
MongoDB数据库查询高级使用指南
MongoDB数据库查询高级使用指南     面向文档的 NoSQL 数据库主要解决的问题不是高性能的并发读写,而是保证海量数据存储的同时,具有良好的查询性能。     MongoDB 几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 1.1 条件查询 = 这个操作符就不用多解释了,最常用也是最简单的 ...
MongoDB数据库的查询使用方法
MongoDB数据库的查询使用方法 1 ) . 大于,小于,大于或等于,小于或等于 $size是匹配数组内的元素数量的,如有一个对象:{a:["foo"]},他只有一个元素: 官网上说不能用来匹配一个范围内的元素,如果想找$size=”操作         15. db.foo.find({"timestamp": {"$gte" : 2}})         16. #子对...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……