问题标签 [multikey]

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 回答
1434 浏览

arrays - 索引 MongoDB 数组位置查询

我想建立一个索引,支持针对特定数组元素位置的查询。

给定数百万个包含值数组的文档:

我想搜索true位置为 2 的文档。

如果我创建一个多键索引:

索引支持形式的查询{ "array": true }(搜索所有数组元素)但不支持{ "array.2": true }(搜索特定数组元素)。

文档说“ MongoDB 为数组中的每个元素创建一个索引键”,所以我期待如果我在该array字段上创建一个索引,它将用于查询array.0, array.1,array.2等。有没有一个技巧来获得这个去工作?

0 投票
1 回答
2153 浏览

arrays - 在 mongoDB 中索引大数组

根据 mongoDB 文档,不建议为大型数组创建多键索引,那么替代选项是什么?

我想在他们的一个联系人也开始使用该应用程序时通知我的应用程序用户,因此我必须上传和管理每个用户的联系人列表。我们正在使用带有副本集的 mongoDB 和两台辅助机器。mongo 可以处理具有数百个值的数组的多键索引吗?数十万用户的数百个联系人可能很难管理。

多键解决方案如下所示:

指数:createIndex({ contacts: 1 })

另一种解决方案是将每个联系人保存在自己的文档中,并保存与他相关的所有应用用户:

两者在上传联系人列表时的写入性能都很差:
第一个是计算巨大的索引,第二个是并发更新大量文档。
有更好的方法吗?
我正在使用带有两台辅助机器的副本集,分片键有帮助吗?

谢谢

0 投票
3 回答
48 浏览

python - 使用多个键值连接两个不同的数据集

我有两组数据。

第一个数据集如下所示:

第二个数据集如下所示:

现在我想要一个看起来像这样的输出:

我尝试在 Linux 中加入命令来执行此任务,但失败了。加入命令跳过了数据库中不匹配的行。我可以使用 Matlab,但数据大小超过 100 GB,这使得这项任务非常困难。有人可以指导我吗?我可以使用 SQL 或 python 来完成这个任务吗?感谢您的帮助谢谢。

0 投票
2 回答
170 浏览

c# - MVC5 详细信息/编辑/删除与多键表

对 MVC5 来说相当新,但迅速普及。这个小问题让我很困惑,关于 Goolge 的信息似乎并不多(或者我没有向 Google 提出正确的问题)。

我有一个表(FILE_RCPTS_LOG)这个表有多个键(2)
第一个键是字段:TRACK_NMBR(int)第二个键是字段:TRANS_DT(日期)

当我创建我的控制器时,还创建了默认视图。在大多数情况下,它们工作正常。但是,我在尝试使用 Edit\Delete\Details 链接时收到 HttpNotFound 错误

这很好,如果我的桌子只有一把钥匙。但是我如何传递两个密钥?

对于这样一个简单的操作,我在网上找到的几个解决方案似乎有点复杂。我想我在这里遗漏了一些明显的东西。. .

这是我的控制器的代码(详细信息)

我尝试了几种传递多个键的方法,但没有任何效果。我已经阅读了一些关于使用 SPLIT 的教程,但我也无法让它工作。这似乎是一件非常简单且非常常见的事情,因为我认为大多数表格都有多键。

有没有我看不到的简单方法?我觉得我想多了。

谢谢!!!

0 投票
2 回答
115 浏览

mongodb - 动态子字段的 MongoDB 索引

MongoDB 3.0.2。文档示例:

在我的例子中,像“123”、“221”、“99”、“95”这样的字符串值是一些类别的id。我只需要使用类别 ID按节目排序:

但是这个类别的数量大约是 250+。我不能为每个设置索引,例如:

因为 cat id 超过 64(MongoDB 限制),并且这个类别可以添加和删除到一些记录,这个过程是动态的。

没有索引我得到:

在..

有人可以为这种情况提供解决方案吗?

0 投票
1 回答
71 浏览

python - 来自二维数组的多键字典

尝试使用列表中的值创建多键字典,其中字典的键是第一列和第一行值,但空单元格除外。

下面的代码没有返回预期的结果。我还尝试了地图功能和列表理解。

0 投票
0 回答
50 浏览

arrays - Mongodb 多键索引无法正常工作

我在集合的数组字段上有一个多键索引。当我使用 $elemMatch 查询该字段的集合时,尽管有索引,但查询速度非常慢。所以我做了解释,索引界限似乎不正确。

我有 mongoDB 版本 3.2.11

这是集合文档结构:

索引定义:

查询:

解释中奖方案输入阶段:

所以我不明白为什么 unregister_date 的界限是

(true, new Date(1564389554000))其中 Date(1564389554000) 是 ISODate("2019-07-29T08:39:14.000Z")

但我认为应该是

[ISODate("2014-07-29T08:39:14.000Z",ISODate("2019-07-29T08:39:14.000Z")]

请问有什么帮助吗?

0 投票
1 回答
466 浏览

mongodb - 排序时似乎没有使用mongodb多键索引

假设我有 tx_collection 有 3 个文档,如下所示

对于性能问题,我在transfers.amount

当我排序时transfers.amount

我期望的文档顺序是按子字段的最大值排序transfers.amount

由于只有 3 个文档,因此排序效果很好。排序顺序是我期望的块号 3 -> 块号 1 -> block_number 2

我的问题是,当有 1900 万个文档时,它会抛出错误消息

按摩就像

排序时似乎没有使用多键索引。

你知道为什么会抛出这个错误信息吗?

JFYI。

  • 我的 mongodb 版本是 3.6.3
  • tx_collection 被分片
0 投票
1 回答
442 浏览

java - Java Hadoop MapReduce 链接作业

我有一些代码可以正确选择源和最高权重。我似乎也无法拉入目标列。有人能指出我正确的方向吗?我以前从未使用过java。我认为 reducer 函数需要返回一个元组。因此映射器函数中的变量目标是否需要有这个元组?

期望的输出:每行包含一个节点 ID,后跟一个制表符 (\t),以及预期的“tgt ,weight”元组。元组是权重最高的 tgt。如果出现平局,则返回编号最小的 tgt。

输入

预期输出

CURRENT OUTPUT(需要在 tgt 列中添加为元组)

0 投票
1 回答
86 浏览

python-3.x - Python3 - 使用单键访问多键字典

我想将时间戳t和标识符映射id到对象的某个状态。我可以通过映射一个元组(t,id)->来做到这一点state_of_id_in_t。我可以使用这个映射来访问一个特定的(t,id)组合。

但是,有时我想知道t特定id(即)的所有状态(具有匹配的时间戳),有时我想知道特定时间戳(即)的id -> a set of (t, state_of_id_in_t)所有状态(具有匹配的标识符)。问题是我不能将所有这些都放在一个大矩阵中并根据我想要的进行线性搜索。我拥有状态的元组数量非常大(1m +)并且非常稀疏(一些时间戳有很多状态,其他没有等等)。我怎样才能制作这样一个可以处理通过部分键访问其内容的字典?idtt -> a set of (id, state_of_id_in_t)(t,id)

我创建了两个不同的字典dict_by_timean dict_by_id,它们是字典的字典。dict_by_time将时间戳映射t到 id 的字典,每个 id 都指向一个状态。类似地,dict_by_id将一个 id 映射到一个时间戳字典,每个时间戳都指向一个状态。这样我就可以访问我喜欢的一个状态或一组状态。请注意,两个 dicts ( dict_by_timean dict_by_id) 的“叶子”都指向相同的对象,所以这只是我访问不同状态的方式,但状态本身是相同的 python 对象。

同样,请注意叶子在两个字典之间共享。

我不认为使用两个 dict 来做这件事很好,因为在添加新的时间戳或标识符时维护它们会导致双重工作,并且当我做错事时很容易导致不一致。有没有更好的方法来解决这个问题?复杂性非常重要,这就是为什么我不能只进行手动搜索而需要使用某种 HashMap 魔法。