我使用的是mongodb3.2.1/python3.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”基本上是一个使用python3.4的“Hash”内置方法计算的散列。在
问题是,在插入这个id之后,我找不到任何具有此id的元素。在
我试过了(现在我直接在mongo终端上尝试这个,但是在Pymongo上它得到了相同的结果):
db.getCollection('unique_alarm').find({"_id": NumberLong(-1819413477243867792)}
以及
db.getCollection('unique_alarm').find({"_id": -1819413477243867792})
对于这两个我都明白了:
Fetched 0 record(s) in 1ms
我以为问题在于我如何处理NumberLong,但是对于field eventtime(具有相同类型)我完全没有问题。在
例如,对于事件时间,如果我询问:
db.getCollection('unique_alarm').find({"eventtime" : NumberLong(1467342666000)})
或通过:
db.getCollection('unique_alarm').find({"eventtime" :1467342666000})
这两个查询都会再次返回第一个文档,没有问题。在
有什么线索吗?为什么前两个查询返回0个结果?
关于我的试错的更多信息:
我觉得你在mongo数分钟内达到了某种极限。在
我打开了一个mongo控制台,这是输出
所以我假设如果你通过NumberLong(“-1819413477243867904”)找到你的记录,这可能证明你的哈希值达到了mongo db limit if NumberLong。在
答案可能很简单,但所有的答案都是用引号
"
围绕number long的值。在插入数据和查询需要“引用”
{a1}
相关问题 更多 >
编程相关推荐