`

MongoDB $elemMatch操作符

 
阅读更多

document中可以内嵌document,

document中也可以有数组,

如果document的数组中是document又是什么情况,

 

例如有个school的collection有如下的document

{
 _id: 1,
 zipcode: "63109",
 students: [
              { name: "john", school: 102, age: 10 },
              { name: "jess", school: 102, age: 11 },
              { name: "jeff", school: 108, age: 15 }
           ]
}
{
 _id: 2,
 zipcode: "63110",
 students: [
              { name: "ajax", school: 100, age: 7 },
              { name: "achilles", school: 102, age: 8 },
           ]
}

{
 _id: 3,
 zipcode: "63109",
 students: [
              { name: "jimi", school: 100, age: 8 },
              { name: "messi", school: 102, age: 7 },
           ]
}

{
 _id: 4,
 zipcode: "63109",
 students: [
              { name: "barney", school: 102, age: 7 },
           ]
}

 

db.schools.find({'students.age':7})  
结果显示_id为2,3,4的三条记录

db.schools.find({'students.0.age':7}) 
结果显示_id为2,4的两条记录

db.schools.find({'students.age':7,'students.school':100})  
结果显示_id为2,3的两条记录
和想象中结果是_id=2一条记录不一样

这时 该$elemMatch出场了

db.schools.find(
	{
	   students:{
		    $elemMatch:{age:7,school:100}
		    } 
	}

)

 

 

$elemMatch还有一种用法,用在第二个参数中

db.schools.find( { zipcode: "63109" },
                 { students: { $elemMatch: { school: 102 } } } )
db.schools.find( { zipcode: "63109" },
                 { students: { $elemMatch: { school: 102, age: { $gt: 10} } } } )
db.schools.find(
                 { zipcode: 63109 },
                 { students: { $elemMatch: { school: 102 } } }
               ).sort( { "students.age": -1 } ) //age倒序



 

  • 大小: 11.9 KB
分享到:
评论

相关推荐

    MongoDB操作符中的$elemMatch问题

    在MongoDB中,$elemMatch是一个非常重要的查询操作符,尤其在处理嵌套数组时,它可以帮助我们精确地匹配文档中的复杂条件。本篇文章将深入探讨$elemMatch的问题及其应用场景。 首先,我们要理解MongoDB的基本查询...

    meteor-elem-match-test:使用 $and $or 操作符在 MiniMongo 中测试 $elemMatch

    `$elemMatch` 是 MongoDB 查询语句中的一个特殊操作符,它用于在数组字段中匹配单个元素。本篇文章将深入探讨如何在 MiniMongo 中使用 `$elemMatch`,同时结合 `$and` 和 `$or` 操作符来实现更复杂的查询。 首先,...

    MongoDB的文档查询.pdf

    本文主要探讨的是如何在MongoDB中进行文档查询,特别是涉及文档对象的查询以及使用$elemMatch操作符。 **1. 文档查询概念** 在MongoDB中,文档查询涉及到查找那些包含特定结构或值的文档。例如,如果一个文档内部...

    MongoDB的数组查询操作符.pdf

    在处理包含数组的文档时,MongoDB 提供了多种操作符来帮助用户更精确地查询数据。这篇文档主要介绍了 MongoDB 中的四个数组查询操作符:$all、$allindex、$allsize 和 $allslice。我们将逐一深入探讨这些操作符的...

    MongoDB如何对数组中的元素进行查询详解

    2. 使用 `$elemMatch` 操作符: `$elemMatch` 用于匹配数组中满足指定条件的第一个元素。例如,要找到 `qList` 数组中 `qid` 为1且 `reorderFlag` 为0的记录,可以使用 `{"qList": {$elemMatch: {"qid": 1, ...

    MongoDB基础学习资料

    例如,`find()`方法用于查询,`$gt`、`$lt`等比较操作符用于指定条件,`$elemMatch`用于匹配数组内的元素。此外,聚合框架允许你进行更复杂的分析操作,如分组、计算平均值和求和。 在数据管理方面,MongoDB支持...

    MongoDB数组与文档查询.pdf

    5. `elemMatch`:这个操作符主要应用于文档对象查询,当需要根据数组内的多个条件进行查询时,`elemMatch` 可以帮助匹配数组中满足所有条件的子文档。例如,`{ array: { $elemMatch: { field1: value1, field2: ...

    MongoDB常用语法/Mongodb的基本使用

    MongoDB支持多种操作符,如比较操作符(`$eq`, `$gt`, `$lt`等)、逻辑操作符(`$and`, `$or`)以及数组操作符(`$elemMatch`, `$all`)。这些操作符使得查询和更新数据更为灵活。 5、增、删、改、查 - 增:使用`...

    MongoDB高级查询

    本文将深入探讨 MongoDB 中一些高级查询技术,包括但不限于条件查询操作符以及更复杂的查询模式。 #### 二、条件查询操作符详解 MongoDB 提供了一系列条件查询操作符,可以帮助开发者根据具体需求进行精确查询。...

    MongoDB命令

    此外,MongoDB 还具备丰富的查询语言、原子更新操作符、文本搜索功能、聚合框架(类似于 SQL 的 GROUP BY 操作)以及 MapReduce 功能,用于复杂的数据分析。 MongoDB 内置了复制功能并支持自动故障转移,以提供高...

    MongoDB入门需知(for_phper)

    例如,你可以使用`$regex`匹配字符串,`$elemMatch`操作符查询数组内的元素。 **聚合框架**: MongoDB的聚合框架允许开发者对数据进行处理,如计算平均值、求和、分组等。这通过`aggregate()`方法实现,其中可以...

    MySQL和MongoDB设计实例对比分析

    而MongoDB使用的是查询API,查询待机时间和外观设计的条件可以通过$elemMatch操作符在一个文档的数组字段中匹配,使得查询更直观简洁。 总结起来,MySQL适合处理结构化数据,有严格的模式约束,适合事务处理和复杂...

    Mongodb读数据操作

    总结来说,MongoDB的`find()`和`findOne()`方法提供了灵活的数据检索方式,配合各种查询操作符和游标方法,可以满足复杂的数据查询需求。理解并熟练运用这些操作,对于高效地管理和操作MongoDB数据库至关重要。

    mongoDB查询速查手册

    MongoDB还提供了一系列原子更新操作符来简化更新操作,保持代码的简洁性,并避免并发问题。 - **{$inc}**: 增加数值。 - **{$set}**: 设置字段值。 - **{$unset}**: 删除字段。 - **{$push}**: 向数组追加一个元素。...

    mongo中模糊查询使用和QueryOperators[整理].pdf

    以下是如何在MongoDB中插入和操作数组及集合的示例: 1. 插入数组: 当我们需要插入一个包含多个对象引用的数组时,可以创建一个`DBObject`,然后将`DBRef`对象放入数组中。`DBRef`是一个特殊的对象,用于引用其他...

    MongoDB_文档_查询

    MongoDB 提供了丰富的查询操作符,如 `$eq`(等于)、`$ne`(不等于)、`$lt`(小于)、`$lte`(小于或等于)、`$gt`(大于)、`$gte`(大于或等于)、`$in`(在数组内)、`$nin`(不在数组内)等,这些操作符允许你...

Global site tag (gtag.js) - Google Analytics