问题标签 [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 投票
1 回答
942 浏览

node.js - MongoDb - $match 过滤器在子文档中不起作用

这是集合结构

level_max_leaves.level当过滤器与给定的输入值匹配时,我需要找到过滤器的子文档值。

这就是我尝试的方式,

但是这里的$match过滤器不起作用。我找不到确切的结果ObjectIdString 1

name如果我用字段过滤,它工作正常。像这样,

但在子文档级别它的回报0

我的预期结果是,

0 投票
1 回答
577 浏览

mongodb - Index and upsert a mongo subdocument

I was working on mongo and I'd like to do the following things:

I tried to do the following things but apparently it's not working as what I imagined.

I checked this post Can mongo upsert array data? and some others but somehow none of them is working. I don't know if it's my problem or mongo problem. Thanks!

0 投票
1 回答
410 浏览

mongoose - Mongoose 模式——对子文档使用对象而不是数组

我正在使用 Node(0.10.5)/Mongo(2.4)/Mongoose(3.6) 来构建游戏,并且我有一个类似这样的 Mongoose 模式......

buildings对象中的每个建筑物使用的最佳方法是BuildingSchema什么?我真的不想走手动验证一切的路线!

注意:该buildings对象不是数组,例如buildings: [BuildingSchema],因为我听说 Mongo 在大型数组中表现不佳(并且建筑物的顺序并不重要)。

0 投票
1 回答
1113 浏览

arrays - 如何使用猫鼬从子文档数组中检索特定字段

我正在尝试从子文档数组中获取特定字段

我不会在父文档中包含任何字段

这是示例文档

如果 userId 在 userId 数组中,我想返回层次结构的等级

这是我到目前为止的查询

到目前为止,它返回了我想要的层次结构数组中的整个对象,但我想将它限制为对象的 rank 属性。

0 投票
1 回答
51 浏览

node.js - 返回插入的子文档的_id

我到处寻找,无法弄清楚。我们如何为 MongoDB/Mongoose 中的更新子文档返回自动生成的 _id?

这是我的架构:

这是我的查询:

非常感谢任何帮助,谢谢!亨利

0 投票
0 回答
74 浏览

arrays - 查找仅具有匹配子文档的匹配文档 MongoDB

当我想查询数组的 macting 子文档时,我总是面临同样的事情。

假设我有一个如下的集合:


我想检索所有只有匹配子文档的文档。条件是 1979 年以后出生,hasACar 为 false,表示省略有 var 且出生于 1979 年以前的人,然后返回文件。

我可以使用聚合框架进行此数学计算,但我很好奇是否有另一种方法可以在不使用聚合或 mapreduce 的情况下进行计算。

我在查询时尝试在投影案例中使用 $elemMatch 运算符,但它返回的文档只有第一个匹配的子文档。

任何帮助或建议表示赞赏。

谢谢。

0 投票
1 回答
673 浏览

mongodb - 如何以原子方式更新子文档?

我有一个文档结构,用于存储每个用户设备的应用程序相关数据。该公司有一些可用的应用程序,这些应用程序是有限的,并且不会经常更改。因此,我使用嵌入式子文档数组的方法设计了文档,以减少查找并使其适合聚合管道。

让一个文档定义:

此集合仅存储特定于设备应用程序的数据,所有与会话/用户相关的数据都保存在另一个集合中。

由于这些应用程序非常繁忙,我必须使用 atomic 命令来做任何事情来降低竞争条件的风险。

这是问题。

给定设备“a”和应用程序“b”,将一些设备-应用程序值(例如,保存 push_token)存储在单个原子命令中。

以下是测试用例。

  • 如果没有设备“a”的文档,则使用 device-app 数据创建一个。
  • 如果设备“a”的文档已经存在,但没有应用程序“b”。推送一个新的设备应用程序。
  • 如果设备“a”的文档已经存在并且应用“b”已经存在。更新现有的。

我浪费了几天时间尝试使用 upsert/addToSet/setOnInsert/etc 进行各种查询。但仍然没有线索。

PS。我还考虑了另外 2 个选项。

  • 使用分离的集合,这会起作用,但会以寻求性能为代价,我觉得它是一种 RDBMS。
  • 使用 app_id 作为子文档而不是数组的映射键,这也可以,但我可能会失去聚合管道的能力并回退到(较慢的)map-reduce。

答案描述

解决方案是使用带有版本字段的乐观锁定。

0 投票
0 回答
40 浏览

nested - 是否可以从嵌套子级编译 knitr 文档?

我尝试制作 2 阶段嵌套子项,我将主文档称为第一阶段子项。如果我从第一阶段的孩子编译它,它工作正常但是当我尝试从第二阶段的孩子编译时它停止了。我认为他们应该在第二阶段的孩子中为其基础阶段的主要文件提供一些指示。

文件结构是这样的,

在顶部FirstStage.Rnw,我写道:% !Rnw root = path/to/Main.Rnw

在顶部SecondStage.Rnw,我写道:% !Rnw root = path/to/FirstStage.Rnw

0 投票
2 回答
314 浏览

mongodb - 用 MongoDB 嵌入集合(子文档数组)违反 REST?

假设users我的 Mongo 数据库中有一个集合:

如您所见,一个用户文档可以包含一个 accessLogs 数组。伟大的。

但是,假设我想更新用户记录并对PUT /users/:id使用该数据库的 RESTful API 发出请求。使用 PUT,您应该取回您输入的内容。假设用户已登录 500 次。为了避免违反 REST,这是否意味着我的 PUT 数据应该包含accessLogs 数组及其所有项目?

我想请求处理程序可以只更新除 accessLogs 之外的所有内容。

0 投票
1 回答
48 浏览

mongodb - 附加到多维子文档

我想为组中的每个子文档添加一个新的文件,如“电子邮件”

请给我建议。提前致谢。

我正在尝试 tis 但它不起作用 db.users.update({},{$push: {"groups.$.email": 'abc'} }, true, true);