问题标签 [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 回答
40 浏览

mongodb - 如何检索子文档数组中的所有文档,如果有任何重复的字段如何检索最新的?

我有下面这样的数据库结构。

在此子文档数组中有一个重复项。我需要编写 mongo db 查询来检索所有子文档,如果有任何重复项,那么根据“生成的”值我需要重新获取最新的值,如下所示。

有没有办法像使用 mongo db 查询一样获取数据?

0 投票
1 回答
200 浏览

mongodb - 当所有 $and 条件匹配相同的子文档时匹配的 MongoDB find()?

如果我有一组如下所示的 MongoDB 文档,我该怎么做才能得到一个 find() 结果,它只返回有 2 只宠物都喜欢肝脏的家庭?

这是我期望的工作:

这是文档集合:

我最终得到的是两个家庭,因为他们都至少有一种食物被标记为 allLike 的真实食物。如果任何食物子文档匹配,则 $and 中的两个条件似乎为真,但我想要的是两个条件作为一对匹配条件。

照原样,我让琼斯一家回来(如我所愿),但也让史密斯(我没有)。Smith 被返回是因为 chicken 子文档的 allLike 设置为 true,并且liver 子文档的名称为“liver”。这些条件在不同的食物子文档中匹配。我希望它们在食品文件上成对匹配。

显然,这段代码不是真正的用例。我有一个,但我已经简化了它以保护无辜者......

0 投票
0 回答
43 浏览

node.js - 在 mongodb 中:当数组被覆盖时,子文档会被删除吗?

在下面的代码片段中,我使用的是 mongoose 和 mongo db。TestSchema 的 arr 属性的元素在第二次保存后具有不同的_id。这是否意味着第一次保存后的子文档在第二次保存后被自动删除?还是我必须在进行第二次保存之前明确删除它?

0 投票
1 回答
98 浏览

mongodb - Mongo 查询前 N 个子文档

我在 MongoDB 的用户集合中有以下数据:

我正在尝试计算整个集合的第一个 appId。因此,对于每个用户,我需要获取他们的第一个 allowedAppId,即该 appId 的组,并获取整个集合的计数。

对于上面的数据,我试图得到这个:

一旦我开始工作,我将尝试将日期参数放在 allowedAppIds.createdDate 中的创建日期周围,以进一步按日期过滤。

我对 Mongo 还是很陌生,所以如果这是基本的,我很抱歉。我在 google 等上看到了很多示例,但找不到任何可以使用聚合管道从子文档中获得前 1 条记录的东西。

通过在我的管道中执行此操作,我确实获得了对实际具有 allowedAppIds 的记录的过滤(并非所有用户文档都有 allowedAppId 子文档):

但我仍然无法从那里获取第一个与 createdDate 相关联的 appId。

0 投票
2 回答
16640 浏览

node.js - mongoose - 引用子文档的 ObjectId

ModelA中的 ObjectId是否可以引用 modelB中的子文档?

0 投票
2 回答
916 浏览

mongodb - 更新了 MongoDB 中的嵌套子文档

我正在尝试更新 mongodb 中的嵌套子文档,

更新查询

上面的查询只更新第一条记录(task.id = "1" 创建日期)它不更新 task.id="2" 子文档!!!!

0 投票
1 回答
82 浏览

javascript - mongodb 保存子文档时的意外行为

我在猫鼬.find查询后这样做:

打印这个:

所以它似乎工作对了吗?

但是,如果我查看我的数据库,我会看到其中的子文档videos仅由一个fakeName字段组成,而我正在修改的对象没有fakeName字段。

这是怎么回事?

我将那里的第一行改为

data2[0].markModified('videos');

这似乎解决了它。

我仍然会根据对正在发生的事情的解释接受答案。

0 投票
1 回答
100 浏览

mongodb - 带有子文档的 mongoDB 文档

我有以下结构:

  • 收藏
    • 文档
      • 信息
        • 字段 1
        • 字段 2
        • 字段 3

该文档将像以前一样开始,我需要通过以下搜索找到该文档:

db.document.find( { "message.field1": "a" } )

找到后,将另一条消息添加为数组,最终结果如下:

  • 收藏
    • 文档
      • 信息
        • 字段 1
        • 字段 2
        • 字段 3
      • 消息(新文档)
        • 字段 1
        • 字段 2
        • 字段 3

我正在尝试做:

但是 mongo 似乎没有找到我正在搜索的子文档......是否可以有多个数组?我在想也许 mongodb 不允许有多个同名的子文档?

多谢你们,

大卫

0 投票
3 回答
204 浏览

mongodb - MongoDB 更新子文档属性

让我首先说对不起,如果这个问题得到了回答,但我无法在这个网站上找到其他问题来满足我的需求,更重要的是,工作。

我有以下示例文档,其中包含“地址”的子文档:

我需要做的是关闭带有end属性的现有地址记录,并为带有新startvalue属性的新地址添加新行。最终,我需要再次执行此操作,因此代码需要更新end不存在的子文档记录。

下面的代码不起作用,但据我所知:

这给出了错误:

谁能指出我正确的方向?

0 投票
2 回答
372 浏览

mongodb - MongoDB子文档

在 mongodb 的新版本中有什么方法可以:

  1. 在文档内的数组中选择子文档或对象,而不是检索父文档,
  2. 然后运行并再次在内存中搜索项目/子文档。

假设一个用户文档中有一个项目列表,其中一个项目的价格超过 50 美元。
我只想要这个项目而不是检索用户文档,然后再次搜索某个项目。

我读到它可能会在下一个版本中出现,但找不到。谢谢 !