问题标签 [nested-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.
mongodb - MongoDB同时查询嵌套文档字段
收集文件test
如下:
当我查询时:
我希望什么也得不到,但是由于存在满足 MongoDB 解决的总条件的 2 个嵌套条目的文档的原因{a:2}
如何修复查询以仅检索两个内部字段同时满足指定条件的文档?
arrays - Mongoose/MongoDB 如何将嵌套文档查询为单个数组
集合中的一项如下所示。
假设我想将所有文档的所有注释作为一个数组检索,我应该如何写我的查询?给出 mongoose 和/或 mongoDB 的例子
php - Mongodb嵌套文档where子句返回许多子文档
我有一个类似于此的 mongodb 文档:
我有一个这样的查询:
我的问题是运行该查询,mongodb 返回两个我不想要的评论,我只想要带有“已发布”的消息:“Y”。
例如,我尝试运行 'comments.published' => 'something' 并且未选择任何评论,这是正确的,但如果至少有一个评论将“已发布”标志设置为“Y”,则会显示两条评论.
欢迎任何帮助。
elasticsearch - 在elasticsearch中搜索文档,然后查询嵌套字段
我有一个这样的索引:
这是我的用例:
我需要搜索具有给定地址的所有“租金”。
- 这很容易完成
我需要为所有搜索的“租金”获取“可用性”数据;仅适用于今天的日期。
- 这是我被困的部分,我如何查询所有“出租”的嵌套文档?
mongodb - 在某些条件下,如何在嵌套文档中获取孩子?
我有一个收藏:
在这个集合中,我想让孩子们了解一些代码。
例如,如果我想让孩子编码为 1、4、6,我需要的结果是:
每个文档都有一些孩子。每个孩子都有一个属性代码。我怎样才能为这个成就做到这一点?
solr - Solr 使用 ChildDocTransformerFactory 查询嵌套文档,得到“父查询产生与父过滤器不匹配的文档”
一些背景:
- 涉及的数据是目录数据,具有三个嵌套对象:Products、Items 和 Sku,按此顺序排列。我们在每条记录上都有一个 docType 字段作为区分符。
- 我们数据中的“id”字段在数据类型中是唯一的,但不是跨数据类型。我们在程序中添加了一个“uuid”字段,用于生成 Solr 导入文件,该文件的 id 以 docType 的第一个字母为前缀,如 P12345。这使得 uuid 字段是唯一的,我们将其作为 schema.xml 中的 uniqueKey。
- 我们正在尝试检索父产品和所有子文档。因此,我们使用 ChildDocTransformerFactory ([child...]) 来检索子项和父项。我们还没有解决将 SKU 中的项目作为嵌套文档在结果中获取的问题,我们将不得不在某个时候解决这个问题,但现在我们将它们扁平化
- 我们正在为此建立概念验证。这都是新的工作,所以我们可以自由地改变很多。
- 这是 Solr 6.0.0,我们正在以 JSON 格式导入,如果这很重要的话
我们的数据如下所示(为简单起见,我删除了一些字段):
获取所有 Products 及其嵌套在其中的子项的查询是q=docType:Product&fl=title,id,docType,[child parentFilter=docType:Product]。当我运行该查询时,一切都很好,它返回前 10 行。但是,如果我通过添加来获取更多行,比如&rows=500,我们会收到错误Parent query yield document which is not match by parents filter, docID=XXX。
当我们第一次看到这个错误时,我们发现我们的 id 字段在文档类型中不是唯一的,所以我们添加了上面提到的 uuid 字段,即。我们还添加了在我们的 schema.xml 文件中,擦除核心,重新创建它,然后重新启动 Solr 以确保它生效。我们已经仔细检查并确保 uuid 字段是唯一的。
在我发现的该错误的所有搜索结果中,OP 没有可以区分不同文档类型的字段,但正如您所看到的那样。由于查询和 parentFilter 都在搜索docType:Product我看不出它们怎么可能返回除了父母之外的任何东西。我们还尝试添加 childFilter=docType:Item 和 childFilter=docType:Sku 但这没有帮助。而且我还尝试使用 title:* 作为查询和 parentFilter,因为只有 Products 有标题。
我们还有什么可以尝试的吗?
对此有何解释?
即使在 schema.xml 中指定了 uuid 作为唯一标识符,它是否有可能不使用它,这甚至会导致这种情况吗?
谢谢。
node.js - 更新双嵌套数组 MongoDB
考虑这个模式:
我可以使用此查询从评论数组中删除某个项目
无论如何,我可以使用运算符更新评论$set
数组中的元素吗?我需要根据评论 ID 更改评论的内容。像这样:
这个 ^ 显然不起作用,但我想知道是否有办法做到这一点?
更新
根据下面的建议,我正在执行以下操作来仅管理一个架构。这可行,但是无论我正在编辑哪些帖子评论,都只会更新第一个帖子的评论。我已经检查过了,返回的文档总是正确的。方法一定有问题doc.save()
。
mongodb - 只有第一个数组元素在嵌套文档 Mongoose 中得到更新
这是我的架构:
我正在尝试编辑注释数组中的元素,并且已经意识到由于 MongoDB 在处理双嵌套文档时功能有限,我应该制作两个单独的模式。
但无论如何,这似乎对我有用,请记住我正在尝试编辑评论数组中特定评论的内容。
这行得通,但它总是只更新第一篇文章的评论,不管我编辑哪条评论。但请记住thisComment[0].content
,如果 console.logged,将始终在正确的帖子下显示正确评论的正确内容。但是,doc.save(err)
我认为问题正在发生。
任何方向都非常感谢,我真的看不出似乎是什么问题。
solr - SOLR:带有嵌套文档的 eDisMax
我们确实有一个电子书索引,其中包含电子书的元数据和作为单个文档的每一页:
- 第一册
- 第 1 页
- 第2页
- 第 3 页
- ...
- 第 n 页
父文档包含一个字段is_parent:true
,一个id
和doc_id
。对于父文档,id
与 doc_id 相同,对于子文档,id
是{doc_id}_{page_number}
。父母和孩子总是相同的(这doc_id
就是我们知道哪个孩子属于哪个父母的方式)。
所以现在的挑战是提供一个全文搜索,它使用 eDisMax 从父元数据和子内容中找到搜索词的最佳结果,并将它们组合成一个分值。
当前查询如下所示:
但似乎_query_
没有将分数添加到主查询的分数中。另外,如果我在开头没有“TEST”术语的情况下执行此操作:'q' =>'_query_:"{!parent which=is_parent:true score=Max}{!dismax qf='content' v='TEST'}"^20',
我得到一个分值 - 所以不知何故分数就在那里,但我不确定如何正确使用它。
是否有另一种选择可以使用组合分数进行嵌套搜索?
在问题出现之前,我们为什么不使用 SOLR 的嵌套文档功能:我们在几年前使用 SOLR 4.6 创建了这个索引,而这个功能当时并不存在。我们现在使用 SOLR 5 和 SOLR 6 的 IndexUpdater 工具将我们的索引更新到 SOLR 6。
过去我们无法创建全文搜索,因为 SOLR BlockJoin 功能根本不支持分数计算,但在 SOLR 5 中发生了变化,所以我们想再试一次。正确方向的每一个提示都会有所帮助。
javascript - 如何将数组元素保存在猫鼬的嵌套文档中?
我有一个架构,其中我有一个数组 Modules,在该数组中我想获取与 req.body.ModId 中收到的具有相同 ModuleID 的元素,我得到那个元素,我想设置那个元素的 ModuleStatement并保存它,但它不会将 ModuleStatement 保存在数据库中 这是架构
以下是从 Modules 数组中获取所需元素的查询
这将返回 Modules 数组的所需元素,该元素将 ModuleID 与 req.body 的 ModId 匹配,但是当我为其分配语句并保存父文档时,更改不会反映在数据库中。我认为可能是父文档可以保存数组元素的更改状态,所以我在父文档上调用了 Save() 函数,如 bot.save() 但它也不起作用。我该如何保存它?