问题标签 [embedded-documents]
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 - 实例化没有父级的子架构
我试图分别创建一个文档和一个子文档。架构:
子架构:
然后我尝试自己实例化街道:
我得到了
如何创建实例化 subSchema 并将其推送到“streets”数组中?
PS - 我也尝试将两个模式放在同一个文件中,但是如果不实例化整个“地方”模式,就无法到达嵌套数组(街道)。
谢谢你。
text - 如何为 doc2vec 选择最佳 vector_size?
我正在比较技术,并想找出对大量文本文档进行矢量化和减少维度的最佳方法。我已经用 PCA、SVD 和 NMF 测试了 Bag of Words 和 TF-IDF 并缩减了维度。使用这些方法,我可以减少我的数据,并根据解释的方差了解最佳维数。
但是,我想对 doc2vec 做同样的事情,考虑到 doc2vec 本身是一个降维器,找出模型维数的最佳方法是什么?是否有任何统计措施可以帮助我找到最佳的 vector_size 数量?
提前致谢!
node.js - Mongodb:创建嵌入式文档 - 获取 Id
我正在尝试Create
为嵌入式文档实现一个简单的 CRUD。
网址是这样的[POST] /restaurants/:id/subsidiaries
查询如下所示:
我正在使用猫鼬 - 所以这会自动为子公司创建一个 ID。
我现在想返回新创建的子公司(包括 ID)。鉴于我的数据中没有任何其他标识符 - 我如何找到新创建的文档?
我知道 Mongo 鼓励嵌入文档 - 但我找不到任何关于如何处理典型(我发现一个非常典型的案例)REST/CRUD 问题的信息。
mongodb - 嵌入式文档数组上的 MongoDB 多键索引 - 排序/范围比较和 min/maxkey
简化示例和问题
为了尽可能简单,我将直接举一个例子:
foo
具有多键索引的集合{searchTags: 1}
:
我正在尝试使用baz
字段键获取所有嵌入式文档(不使用$exists
- 我可以稍后尝试解释原因)。为什么
{searchTags: {$elemMatch: { $gte: { baz: MinKey() }, $lte: { baz: MaxKey() }}}}
返回两个文件(不是首选),但是
{searchTags: {$elemMatch: { $gte: { baz: "" }, $lte: { baz: MaxKey() }}}}
只返回{_id: 2, searchTags: [{baz: "BAZ"}]}
(首选)?
旁注:快速架构细节可能会避免“你在做什么?” 问题
- 这些是简单的嵌入文档,只有 1 个键值对。
- 这些值可以是多种类型,而不仅仅是字符串(否则,我将只使用前缀字符串数组而不是嵌入文档)
- 由于嵌入式文档是单一的键值对,我可以确定性地在嵌入式文档上使用相等和比较查询。
- 键是
foo
文档上的其他字段名称,值是它们的字段值。我可以索引各个字段,但它们将是部分索引并且会有很多。为了灵活性,将它们全部合并到具有多键索引的数组中是最有意义的。 - 仍然愿意听到我为什么错了:)
mongodb - 从与数组上的查询条件匹配的第一个元素中投影特定字段
我有一个families
收藏。其中的文档有一个users
数组。鉴于这份家庭文件:
我想投影数组元素的type
字段identities
,但仅限于我正在查询的特定用户。位置运算符获得正确的用户:
我可以指定我感兴趣的领域:
但是当两者结合时,只有位置运算符受到尊重:
(返回 id 为 2 的用户,但返回所有字段的标识数组元素)。想过尝试这个:
但这并不好,因为根据文档:
MongoDB 忽略 $ 之后的路径部分
有没有办法做到这一点?
html - 如何从提交的 html 表单中检索值并将其存储在 mongoose 模式中的嵌套文档中
猫鼬模式:
使用 EJS 的 HTML 表单:
我的控制器如下:
这是存储在数据库中的内容
这就是我的req.body
我的问题是您如何甚至从表单中检索所有密钥并将其存储在 addressSchema 中?我在想在实例化 ContactModel 对象时添加 req.body 会获取所有值并将其添加到相应的架构中。
arrays - 数据对象内地址数组的setState
我是 React 的新手,我目前正在使用 MERN 堆栈开发一个应用程序,并且正在寻找一些建议。
我有 React User 组件,它调用并呈现带有来自 mongodb 的嵌入文档的用户对象。当我从数据库返回数据时,它采用以下格式:
我已将地址设置为 mongo 中的嵌入式文档/地址数组,并且需要保持这种格式。
在我的用户组件上,我正在显示返回值文本控件,我希望用户能够编辑、更新并提交回数据库。我已经成功地更新了对象数据,但是在对象内编辑数组让我难过了好几天。理想情况下希望以相同的格式将用户对象传回,因此我不必解构“req.body”并将其映射到相应的字段 -除非这是唯一可以做到的方法。
我对更新“用户”字段的状态没有任何问题,但似乎无法弄清楚如何更新嵌入数组中保存的地址数据的状态。下面是我的代码的摘录
你有什么建议吗?
在将数据提交到数据库之前,我应该将数据简单地管理为一个简单的对象并将嵌入映射到一个数组,还是我错过了一些非常简单的东西?
注意:我也在使用猫鼬和 axios
arrays - 在 Mongoose 中的另一个数组的对象中查找数组中的字段
我有这样的数据结构,并且正在使用猫鼬 findOne 查询。在此,假设用户在项目“A”下输入另一个名为“Task1”的 itemName,则发送结果,因为任务已经存在。
基本上,我无法理解如何编写查询以获取详细信息,以便遍历“itemName”,它是“items”数组中的一个字段,它是“projects”数组中的一个对象中的一个字段。此外,关于如何继续使用 findOneAndUpdate() 来更新 itemName 或其中的子项。
“数据”: {
node.js - 猫鼬在嵌入式文档中获取特定项目
我是 NoSQL 的新手,我有点卡住了。你能帮助我吗?
如果它匹配一个值,有什么方法可以获取数组中的特定字段?例如,我想在 accountGroupName=="Account 1" 的数组 accountGroup 中获取特定项目。
我尝试了很多代码,但它只返回具有与该值匹配的项目的整个数组。
顺便说一句,我正在使用 Mongoose 和 Nodejs。谢谢。
node.js - Mongoose runValidators 无法使用 positional$ 处理 findOneandUpdate
我正在尝试更新 accountGroup 并确保没有重复。这是我的架构:
我的初始更新代码正常工作:
但是当我添加 { runValidators: true, context: 'query' } 时,即使没有重复发生,代码也总是显示验证失败。
runValidators 的放置/位置有问题吗?你能帮助我吗?谢谢