MongoDB可以按照下标查出内嵌数组的元素,但是不能通过元素的值来查询下标。例如:数组中的元素是按照排名的先后顺序存放的人员姓名,MongoDB可以根据排名(数组下标)来找姓名,但是不能通过姓名查找排名(数组下标)数值。esProc集算器可以协助MongoDB实现这个需求,下面通过例子来看一下具体做法。
MongoDB的集合b中,保存了姓名和朋友(数组)。朋友数组中的人名是按照排名顺序保存的,如下:
> db.b.find({“name”:”jim”})
{ “_id” : ObjectId(“544f3bf8cdb02668db9ab229″), “name” : “jim”, “friends” : [ "t
om", "jack", "luke", "rose", "james", "sam", "peter" ] }
MongoDB可以查找指定排名的人名,例如查找jim的朋友当中,排名第一的人名:
> db.b.find({“name”:”jim”},{“friends”:{“$slice”:[0,1]}})
{ “_id” : ObjectId(“544f3bf8cdb02668db9ab229″), “name” : “jim”, “friends” : [ "t
om" ] }
但是无法查找jim的朋友当中,“luke”的排名数值。esProc解决这个问题的脚本是:
A1:连接MongoDB,ip和端口号是localhost:27017,数据库是test,用户名和密码都是test。如果需要其他参数的话可以按照mongo://ip:port/db?arg=value&…格式继续写参数。
A2:使用find函数从MongoDB中取数,形成游标。集合是b,过滤条件是name=jim,指定键是name和friends。可以看出find函数和MongoDB的find函数类似。esProc的游标是分批读取和处理数据,可以避免数据量过大,内存出现溢出的情况。
A3:因为数据量不大,所以这里fetch出游标的所有记录。
A4:使用pos函数,查出luke的位置。
运行的结果是:
需要说明的是:esProc并不包含MongoDB的java驱动包。用esProc来访问MongoDB,必须提前将MongoDB的java驱动包(要求2.12以上版本,如:mongo-java-driver-2.12.2.jar)放到[esProc安装目录]\common\jdbc中。
集算器协助MongoDB计算的脚本很容易集成到java中,只要增加一行A5,写成result A4即可向java输出resultset形式的结果,具体的代码参考esProc教程。同样,用java调用esProc访问MongoDB也必须将MongoDB的java驱动包放到java程序的classpath中。
相关推荐
数组和文档是 MongoDB 数据模型中的核心概念,本篇资料着重介绍了如何在 MongoDB 中进行数组与文档的查询操作。 首先,了解数组在 MongoDB 中的作用至关重要。数组允许在一个文档中存储多个值,这些值可以是相同...
在处理包含数组的数据结构时,MongoDB 提供了一系列的更新操作符,使得对数组元素的增删改查变得非常方便。本篇文章将详细讲解 MongoDB 中与数组相关的更新操作符。 1. **$push 操作符**: - `$push` 操作符用于向...
在修改的代码段中,主要对“or”逻辑进行了处理,具体通过查询条件数组中的键名判断,将匹配到的条件转换成MongoDB可以识别的格式,并组合到一起形成复合查询。例如,当条件值中包含“or”,会创建一个数组,并将...
这篇文档主要介绍了 MongoDB 中的四个数组查询操作符:$all、$allindex、$allsize 和 $allslice。我们将逐一深入探讨这些操作符的用法和应用场景。 1. **$all** `$all` 操作符用于匹配数组字段中的所有指定元素。...
本文将详细讲解如何在MongoDB中根据数组大小进行查询,特别是如何实现对指定大小的数组以及某个范围内的数组大小的查询。 在MongoDB中,查询数组大小最直接的方法是使用`$size`操作符。例如,如果我们想要找出数组`...
mongodb在计算集合数组值时候,我们通常会想到使用$group与$sum,但是如果是数组里面多个json对象,并且还需要根据条件过滤多个对象的内容该如何处理? 现在让我们来实现它,假设mongodb中有个user集合,其数据内容...
MongoDB 高级查询用法大全 ...MongoDB 可以查询数组中的值,例如: ``` db.customers.find({ colors : "red" }); ``` 这些高级查询用法大全可以帮助开发者更好地使用 MongoDB 实现复杂的数据查询。
本篇文章将详细介绍如何在MongoDB中对数组元素进行查询。 首先,MongoDB 的数组可以包含简单数据类型如数字、字符串,也可以包含嵌套的文档。例如,一个数组可以是 `[1,2,3]`,也可以是 `[{name:"t5"}, {name:"t7"}...
在处理多重数组查询时,MongoDB 提供了强大的查询工具,使得从嵌套的数组中检索数据变得简单。在本场景中,我们将讨论如何进行多重数组查询以及如何将查询结果在前端使用AngularJS绑定并显示。 首先,我们看到一个`...
在 MongoDB 中,查询语法是非常重要的一部分,本文将对 MongoDB 的查询语法进行详细的介绍。 基本查询语法 在 MongoDB 中,基本查询语法为 `db.collection.find()`,其中 `db` 代表当前数据库,`collection` 代表...
MongoDB中的查询与索引 MongoDB是一种NoSQL数据库,支持灵活的文档存储和查询。下面是MongoDB中查询和索引的相关知识点: 一、find函数的使用 * find函数不带参数时,查询集合中所有文档 * find函数带条件参数时...
sift.js, 使用mongodb查询筛选数组 使用mongodb查询验证对象的&筛选器数组 扩展文档 checkout http://docs.mongodb.org/manual/reference/operator/query/插件功能:Support
在本题中,我们将探讨 MongoDB 的查询操作,基于提供的 `user1` 和 `user2` 文档进行练习。 首先,让我们熟悉一下 `db.users.drop()` 命令。这个命令用于删除集合 `users`,如果存在的话。在 MongoDB 中,集合是...
在MongoDB中,查询操作是获取数据的关键部分,本教程将深入讲解如何在MongoDB中进行各种查询操作。 1. **基本查询** - `findOne()` 方法用于查找集合中的单个文档。例如: ```javascript > db.test.findOne() `...
这是因为MongoDB会分别在`school`数组中查找`school`为`J`和`score`为`A+`的元素,而不是同时查找满足这两个条件的单一元素。此时,我们应使用$elemMatch来构造正确的查询语句: ```javascript db.persons.find({ ...
### MongoDB查询速查手册知识点详解 #### 一、MongoDB简介 MongoDB是一款开源的、高性能的文档型数据库。它采用类似于JSON的数据结构存储数据,称为BSON(Binary JSON),这是一种二进制格式,用于存储文档。在...
1. **数据模型**:MongoDB的数据模型基于JSON(JavaScript Object Notation)格式,文档由键值对组成,键是字符串,值可以是各种类型,包括其他文档、数组等。这种数据模型非常适合处理半结构化和非结构化数据。 2....