• 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 0

    Mongodb $in操作符

    Posted by 撒得一地 on 2016年3月30日 in Mongodb教程
    国外稳定加速器推荐    Express | Vypr

    $in

    $in操作符输出数据库中特定字段的值等于指定数组中某一个值的文档,为了定义 $in 表达式,使用了以下原型:

    { field: { $in: [value1,value2, ... valuen ] } }
    

    如果field是一个数组,那么$in操作符将输出所有文档中包含field这样的数组,而且field中至少一个元素在定义的[value1,value2, … valuen]这个数组中。

    下面介绍实例,使用 $in 操作符来匹配数值:

    >db.test.find()
    {"_id":1,"name":"psz","age":22}
    {"_id":1,"name":"psz","age":23}
    >db.test.find({age:{$in:[23,24]}})
    {"_id":1,"name":"psz","age":23}
    

    上面查询语句输出test数据库中,age这个字段的值要么是23,要么是24的文档。虽然上面的查询也可以使用 $or 操作符,但是当判断某个字段的值在一个域中是有与之相等时,理应用 $in 操作符。

    使用 $in 操作符匹配数组中的值

    例子,假设test数据库含有的文档中包括tags这字段,如下:

    { _id: 1, tags: [ "school", "clothing" ], sale: false }
    

    这时候如果想使用 update() 更新操作符来将sale字段设置为true,而且前提条件是只有当tags数组中至少有一个元素的值是"appliances" 或 "school"时才将其设为true。那么可以这么操作:

    db.test.update(
         { tags: { $in: ["appliances", "school"] } },
         { $set: { sale:true } }
    )
    

    再看一个关于数组匹配的实例:

    >db.test.find()
    {"_id":1,"name":"psz","age":[22,23,24]}
    {"_id":1,"name":"psz","age":[22,18,19]}
    >db.test.find({age:{$in:[3,4,5,22]}})
    {"_id":1,"name":"psz","age":[22,23,24]}
    {"_id":1,"name":"psz","age":[22,18,19]}
    

    上面的age数组中都有22这个元素,而22这个元素在指定的[3,4,5,22]这个数组中,所以符合匹配要求。$in 满足的要求是至少一个匹配即可。

    用正则使用 $in 操作符

    $in 操作符可以使用正则表达式/pattern/这样的形式来进行数值匹配,但是你在 $in 操作符中不能使用 $regex 操作符。

    看下面的例子:

    db.test.find( { tags: { $in: [ /^be/, /^st/ ] } } )
    

    上面的例子中输出test数据库文档中,tags数组里面至少有一个元素要么以 be 开头或者以 st 开头的文档。

    上一篇:

    下一篇:

    相关推荐

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    4 + 8 = ?

    网站地图|广东快乐10分开奖直播

    Copyright © 2015-2019 广东快乐10分开奖直播 All rights reserved.
    闽ICP备15015576号-1,版权所有?psz.

  • 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 3d试机号历史数据对应 幸运28是怎么坑人的 体彩6+1中奖规则 中国福彩网3d字谜 pk10杀号 秒速飞艇是官方彩吗 吉林快3 足彩14场胜负彩计算器 时时彩开奖号码 加拿大快乐8查询 湖南幸运赛车破解版 幸运赛车怎么算 十一选五助手 四川时时彩走试图 比分帝直播 体彩p3双彩论坛字谜