问题标签 [subdocument]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
175 浏览

arrays - Mongodb:查询子文档数组

我有用户的集合,其架构如下:

我想找出 in 的所有值都应该是我传递的值的state用户address。如果其中一个state值与我传递的值不匹配,则不应返回用户。我尝试了简单的查找、聚合框架$unwind$match但似乎没有任何解决方案。你能帮帮我吗...

谢谢

PS为了提问,请多多包涵。:)

0 投票
2 回答
933 浏览

javascript - 通过 Meteor / Mongo 返回子文档数组

我在返回和显示要添加到子文档的标签时遇到了一些麻烦。我添加标签没有问题,但想在每个标签的项目上放置一个标签。我根本找不到可以帮助我返回子文档中数组中的项目的资源。我认为这是我卡住的所有帮手 - 基本上是语法正确的方式来编写“Items.(this._id).itemTags.find();” :)

哦 - 我已经删掉了很多 HTML 和 JS,但是,是的,其他一切都工作正常。集合是“Items”,子文档是“itemTags”,在插入期间用“itemTags: []”设置。在我的测试环境中,我可以添加“Cats”和“Dogs”作为标签,并可以通过“Items.find().fetch();”检查对象来验证它是否有效。但我正在努力展示它们。

HTML:

JS:

数据库模式(如我的插入命令所示):

0 投票
1 回答
1410 浏览

python - 如何使用python脚本从mongoDB中检索数组中的子文档

我对 python 和 mongoDB 很陌生,需要完成这项任务。

我有一个包含类似于下面示例的文档的集合。

我正在尝试在 python 脚本中阅读此集合。我无法从子文档中检索分数

我正在尝试为每个学生找到项目工作的最低分数,但我无法使用索引“scores.2.score”检索分数。

需要一些帮助来理解检索方法。

0 投票
0 回答
190 浏览

node.js - Mongoose:子文档上的实例方法

考虑一张包含许多歌曲的专辑。我将专辑模式定义为将歌曲作为子文档。

但我不确定我们如何为子文档创建实例方法。

考虑如下架构:

我可以知道我们如何在子文档上实现实例方法吗?

0 投票
1 回答
232 浏览

arrays - 子文档数组中的mongodb多键索引范围

作为背景,文档中与我的问题最相关的页面是this page on multikey index bounds and index intersection

我遇到了一个问题,似乎 mongo 没有正确组合子文档数组中字段的 $elemMatch 查询中的索引边界。

文档似乎并没有说我的特定用例不应该工作,并且有很多例子非常接近我正在做的事情。从技术角度来看,我想不出任何不应该工作的理由。我是否错过了什么,或者有人可以向我解释为什么会这样吗?

我从一组这样的文档开始:

我有这样的索引:

当数据数组中只有一个子文档时,如下所示:

对数据的 $elemMatch 查询工作得很好:

但是,当我在数组中添加任何包含多个子文档的文档时data,如下所示:

查询需要更长的数量级(在非平凡的测试用例中),并且解释将边界从正确更改为[2, 2][-Infinity, 2]并且isMultiKey标志标记为true

它仍在使用正确的 btree 索引并获得正确的结果,但这个问题是在大型数据集上可用和不可用之间的区别。

我知道我正在使用的查询也相当于:

但我这样做是为了简单起见 - 在使用任何 $gt $gte $lt $lte 指定任何边界时会观察到相同的行为,因为索引边界在索引中设置不正确(或者在我看来)。

作为参考,当我执行上述查询时,我实际上得到了我期望的索引范围,所以它不像 mongo 不能使用多个子文档的数组发出满足我想要的计划的查询:

......再说一遍 - 我错过了什么吗?我做错了吗?有解决办法吗?这是错误还是已知问题?

我在分片复制集群中使用 mongodb v2.6.5。

0 投票
1 回答
738 浏览

node.js - 如何在 mongoose + nodejs + express 中删除子文档

如何删除名为任务的子文档?父架构是用户,子架构名为任务。

这是我的路线:

还有一点ajax:

为什么这不起作用?

0 投票
1 回答
189 浏览

mongodb - 每个子文档的 MongoDb 聚合

我有这些收藏品、统计数据和物品。Stats 有一项作为子文档:

我想按 item.type 聚合 Stats 分组。可能吗?

我尝试了这样的事情,但没有运气:

0 投票
1 回答
324 浏览

angularjs - 使用角度 $http 获取子文档

假设您有嵌套的集合abc,它们遵循以下映射:

这里是a1从 MongoDb 数据库中获取的$http

现在,在bee数组中,我们只有引用 ( id)。我们想要的是继续跟随地图更新a1,并用实际数据替换引用。

它需要从数据库中获取b1b2数据,每个数据库都可能有cee数组,我们需要从c集合中获取其元素。

我想人们可以很容易地创建一个专用的后端函数,它会接受a1,一次完成所有的获取并返回最终结果;

但是如何a1通过使用多个 $http/$resource 调用来获得完整的详细版本?

是否应该使用递归函数?

还是最好使用 $q 和链式承诺?

如何遍历地图(了解哪些集合是相关的,以及它们的名称),检索相关b项目,然后是相关c项目,最后更新a1,以便替换a1为:

0 投票
0 回答
254 浏览

c# - 子文档 C# 上的 MongoDB 地理空间查询

我已经成功获得

当我的文档具有以下结构时返回正确的结果:

这个索引:

但是,当我将文档更改为包含一个带有 Foos 数组的子文档时,如下所示:

我更改索引和查询以使用子文档字段,如下所示:

它按预期停止工作。在上面的场景中,它返回一个包含 1 个项目的 Location 列表,该项目是所有 Foos。

更新 详细说明,如果我有 400 个 Foo 对象,那么在我对子文档运行查询后,它会返回一个 List,其中 Locations 是一个具有 400 个 Foo 的列表。所以它没有成功检查 Foos 是否在 poly 中。

从我的即时窗口:

我期望的是基于多边形过滤列表位置。

谁能告诉我哪里出错了?我在网上搜索过,似乎没有很多具有这种结构的示例,但文档说您可以按照我的方式拥有索引。

您还可以将位置数据建模为子文档内的字段。在这种情况下,文档将包含一个包含文档数组的字段(例如地址),其中每个文档都有一个保存位置坐标的字段(例如 loc:)。例如:

然后,您可以在addresses.loc 字段上创建地理空间索引,如下例所示:

我的查询一定是错误的,因为我一定不了解子文档是如何正常工作的。

有任何想法吗?

谢谢。

0 投票
1 回答
48 浏览

arrays - 通过 subdocumentId 从子文档数组中删除一个元素

所以我有以下架构:

现在我有一个操作来删除一个问题(问题是唯一的)而没有轮(父)_id。

我在这里查看了如何从数组中提取元素,但是我根本找不到正确的方法来做到这一点,在链接中它是一个非文档数组,所以这与我的情况有点不同。

我试过的:

没用,所以我假设我只需要在更新语句中指定子文档的字段:

也没有工作,我在这两种情况下受影响的行数都是 0。在过去的几个小时里,我尝试了其他几件事,但都没有工作。

注意:请求对象中的问题_id是正确的。