我使用的是MongoDB 3.2.1/python 3.4/pymongo/pandas 0.17(尽管后两个可能与这个问题完全无关)。
我对MongoDB find有一个非常奇怪(和错误)的行为。
我有一个收藏,包含这样的文档:
{
"_id" : NumberLong(-1819413477243867792),
"targetentity" : "NODOGENERICO .ag.HP_BAR_DEG_APP_1",
"tx" : false,
"ocname" : ".oc.serv6",
"specificproblem" : null,
"saf" : false,
"iscriticalnode" : null,
"checkmask" : null,
"notificationidentifier" : 1347592,
"province" : null,
"usertext" : null,
"additionaltext" : "AAA Invalid Response",
"director" : ".temip.madrids01_director",
"problemoccurences" : 1,
"usertags" : null,
"managedobject" : "NODOGENERICO .ag.HP_BAR_DEG_APP_1",
"isacceptednode" : null,
"elementcode" : null,
"state" : "Terminated",
"probablecause" : "Unknown",
"ran" : false,
"counttotal" : 1,
"locationcode" : "NULL",
"problemstatus" : "Closed",
"structurednotes" : null,
"collection" : "serv6",
"operatornotes" : null,
"alarmtype" : "CommunicationsAlarm",
"workinfo" : null,
"perceivedseverity" : "Major",
"core" : true,
"eventtime" : NumberLong(1467342666000),
"originalseverity" : "Major",
"vendor" : "Several",
"controlelementcode" : null,
"outageflag" : false,
"incident" : null,
}
这个“_id”基本上是使用Python 3.4的“Hash”内置方法计算的哈希。
问题是,在插入该id后,我找不到任何具有该id的元素。
我已经尝试过了(在这一点上,我直接在mongo终端上尝试这个,但在Pymongo上,它会得到相同的结果):
db.getCollection('unique_alarm'). find({"_id": NumberLong(-1819413477243867792)}
和
db.getCollection('unique_alarm'). find({"_id":-1819413477243867792})
对于两者,我都得到了这个:
在1ms内获取0条记录
我以为问题在于如何处理NumberLong,但对于field eventtime(具有相同类型),我绝对没有问题。
例如,如果我询问:
db.get集合('unique_alarm'). find({"eventtime": NumberLong(1467342666000)})
或者:
db。getCollection(“唯一报警”)。查找({“eventtime”:1467342666000})
这两个查询都会再次返回第一个文档,没有问题。
有什么线索吗?为什么前两个查询返回0个结果?
有关我的尝试和错误的更多信息:
我认为你在mongo NumberLong的范围内达到了某种极限。
我打开了一个mongo控制台,这是输出
> NumberLong(-1819413477243867792)
NumberLong("-1819413477243867904")
所以我假设如果你通过NumberLong(“-1819413477243867904”)查找,你会神奇地找到你的记录,这可能会证明如果NumberLong,你的哈希值达到了某种mongo db限制。
答案可能很简单,但所有答案都与数字长度的值周围的引号“
有关。
插入数据和查询需要被引用
db.sofia.find({"_id" : NumberLong("-1819413477243867792")}).pretty()
{
"_id" : NumberLong("-1819413477243867792"),
"targetentity" : "NODOGENERICO .ag.HP_BAR_DEG_APP_1",
"tx" : false,
"ocname" : ".oc.serv6",
....
}
这个对话框包含用 查找文件 命令找到的条目。您可以选择一个或一个以上的文件然后选择“解压缩到”来解压它们。您也可以按下“查看”来查看光标所在处的文件或者是“定位”来在 WinRAR 的主窗口中选定这个文件。 因为技术限制,如果搜索时执行查找到的文件会有一定的延迟。 WinRAR 只有在当前正在处理的压缩文件已经被关闭时才执行这个命令。
我是聚合框架的新手,有以下问题。 我的收藏是这样的: 用户 ActivitiesFeed 活动 聚合函数 如何使用第一个查找结果进行查找? 我查阅了activities集合。此集合保存第二个查找BaseData.UserID的id。但是使用这种方法,第二次查找没有结果。 我对activities集合进行连接的原因是actionID可以保存来自另一个集合的用户id或文档id。它取决于activiti
问题内容: 我有一个数据库表看起来像这样 当我运行此查询时,应该不显示任何行,因为不存在具有value的行: SELECT * FROM tableName WHERE ID =‘101foo2’ 我得到的结果具有相同的ID,但没有单词 如果我的查询是如何显示具有ID的行 问题答案: 您正在混合类型。 是一个整数(或数字)。您正在将其与字符串进行比较。因此,MySQL需要确定用于比较的类型。使用什
我有一个问题,就是对数据库的查询不能得到正确的结果。 在带有此查询的工作台中:
问题内容: 我有此查询以获取月结果。但是我想得到今天的结果。 做这个的最好方式是什么? 问题答案: 您的开始日期对象应将当前日期时间设置为(毫秒精度),并将今天的时间设置为: 然后像往常一样在您的MongoDB查询运算符中传递修改后的日期对象: 如果您正在使用 momentjs 库,则可以通过在当前当前日期对象上使用 and 方法,并将字符串作为参数传递来实现:
我试图从我的数据库中得到一些数据,但我不会得到正确的结果。 我的方法: 所以应该有一个确切的结果,但我从控制台得到的全部是:日期的范围是从今天(6月12日-2周) CEST 2012年Tue Jun 12 14:49:11 2012年东部时间5月30日星期三14:49:11