问题标签 [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.
node.js - Mongoose for var in loop 在子文档中
我创建了这个架构mongoose Schema
:
当我使用findOne
方法获取数据时,结果如下所示(在console.log()
):
所以,当我想socialAccounts
用for var in
循环结构迭代子文档并查看数据时console.log()
,它返回一些其他对象和函数,只有第一个是子文档对象。
如何socialAccounts
使用此 for 循环迭代方法仅获取子文档的第一个元素。
谢谢
mongodb - Mondodb如果我知道父ID和子ID,按ID检索子文档的最佳方法是什么
现在我正在这样做
,但不确定这是否是正确的做法。我的架构是这样的
所以我想通过 560b05b6fd9d267f60b7bb28 和 561a22cbe6ebf6d62965b4bc 获得电话 1234
javascript - 为什么在 Mongoose 中查询子文档时没有返回文档?
我正在运行以下代码:
我想按toId.id
字段查询 X 模型。toId
字段的类型为 Y。以下是模型定义:
Y 只是一个定义为的对象:
在我的数据库中,我有一个类似的条目:
无论如何,这应该满足我的标准。
但是,以下查询:
返回一个空列表。为什么会这样?
node.js - Mongoose 在引用的子文档数组中查找
我正在尝试查找来自 ip 的某些访问。访问模式如下所示:
ip 架构如下所示:
当我尝试为特定 ip 运行正常查找时:
它返回一个空数组。mongo 数据库中的所有记录看起来和行为都正常。
请帮助我已经没有想法了。
node.js - findOneAndUpdate 子文档字段被覆盖
我有一个带有嵌套文档的 shema:
并尝试更新评论
带有请求正文
在请求启动时,它会返回一个带有未更改评论的博客文章。启动 GET 请求我收到更新的博客文章,并更新了正确的评论,但是:它丢失了所有字段,除了包含新内容的文本。甚至_id也被删除。
我可以将 findAndUpdate 函数与此类“部分”输入对象一起使用,只修改那里提到的字段,但保持其他字段不变吗?
以及如何在没有额外的类似查找请求的情况下从函数返回已修改的对象?
node.js - Mongoose $push - 在以下情况下没有错误:插入具有现有唯一字段的对象 + 插入垃圾
我想要完成的是在主文档中有一个对象数组(子文档方式:在架构中定义),我希望这个子文档表现得像一个文档本身。
也就是说,当将一个对象推入子文档数组时,我希望它抛出一个错误:
- 如果
unique
正在插入的对象的任何字段已被占用 - 如果插入的对象不匹配
TemplateSchema
这将是我的主要文件:
以下是子文档,templates
里面的字段ApplicationSchema
:
在这种情况下,当我尝试:
- 添加一个已存在的新对象
name
,或 - 将任何垃圾推入我的子文档
事情是这样的:
- 没有关于重复字段值的错误
{some: "trash"}
正在插入垃圾对象(即) - 不是真正的对象本身,而是在数组中推送一个空template
对象templates
我不知道为什么。
这是我用来将新模板对象插入到templates
主文档内的数组中的查询,我猜这里它没有按预期工作:
java - Mongodb:从文档中提取子文档
我的数据库架构如下所示:
这些问题要求我们删除每个学生的最低作业分数。我的做法是:
- 首先得到一个文件列表,其中只包含学生的 id 和作业分数。
- 获取每个学生的最低硬件分数。
- 拉出包含最低作业分数的子文档。
我的打印正确地显示了每个学生的最低作业分数,但我的拉取查询没有从数据库中删除值。我在这里想念什么?不寻求解决方案,只是提示我在这里做错了什么会有所帮助。谢谢。
node.js - 如何在查询中使用 $push 将数据插入子文档,而不是检索文档并将其保存回来
编辑:这实际上是有效的
正如猫鼬 - 子文档:“添加子文档”文档所说,我们可以使用该push
方法添加子文档(即parent.children.push({ name: 'Liesl' });
)
但我想更进一步,想使用$push
操作符来插入子文档。
我有两个架构ThingSchema
:
和BoxSchema
,具有子文档数组 ( things
)的主文档ThingSchema
:
我需要每个子文档都有名称 - 也就是说,不可能将新文档插入到该数组中,该数组的值已经存在于子文档中。things
unique
name
我正在尝试做类似的事情:
但没有得到任何想要的结果。
在查询中使用运算符将ThingSchema
子文档添加到BoxSchema
'thing
数组中的正确方法是什么(如果有另一个名称相同的子文档,则不得添加子文档),而不是Mongoose Docs方式?$push
编辑:这实际上是问题
我犯了一个错误,上面的代码按预期工作,但现在我遇到的问题是当thingObj
不匹配时ThingSchema
,将一个空对象插入到things
数组中:
当执行给定上述垃圾对象的查询时,以下空对象被插入到 subdocs 数组中:
我想要这种情况,当 与thingObj
不匹配时ThingSchema
,无需添加任何内容。
mongodb - 跨多个子文档的 MongoDB 唯一索引
我有这个文档结构,属性“名称”在所有文档中必须是唯一的,如上所示:
可以用这种结构创建唯一索引吗?
node.js - MongoDB:如何插入子文档?
我在我的 MEAN 项目中使用子文档来处理订单和每个订单的项目。
这些是我的(简化的)模式:
要在 itemPerOrderSchema 数组中插入项目,我目前这样做:
问题是我显然想要一个项目itemId
,这样我就可以获得每个项目的许多子文档......
一种解决方案可能是遍历所有order.items
,但这不是最佳的,当然(order.items
我可以很多......) . 查询时可能会出现同样的问题order.items
...
问题是:如何在itemPerOrderSchema
数组中插入项目而不必遍历订单中已插入的所有项目?