Mongodb find,结果错误Int64 obj

2024-09-29 05:31:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是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个结果?

关于我的试错的更多信息:

  • 不管字段是“\u id”还是其他字段,我都无法搜索这些数字
  • 我用pymongo插入这些文档
  • 如果我再次尝试插入此文档(使用pymongo或mongodb终端),就会出现重复密钥的错误。。。在

Tags: 文档idfalsedb错误findnullunique
2条回答

我觉得你在mongo数分钟内达到了某种极限。在

我打开了一个mongo控制台,这是输出

> NumberLong(-1819413477243867792)
NumberLong("-1819413477243867904")

所以我假设如果你通过NumberLong(“-1819413477243867904”)找到你的记录,这可能证明你的哈希值达到了mongo db limit if NumberLong。在

答案可能很简单,但所有的答案都是用引号"围绕number long的值。在

插入数据和查询需要“引用”

db.sofia.find({"_id" : NumberLong("-1819413477243867792")}).pretty()

{
        "_id" : NumberLong("-1819413477243867792"),
        "targetentity" : "NODOGENERICO .ag.HP_BAR_DEG_APP_1",
        "tx" : false,
        "ocname" : ".oc.serv6",
        ....
}

{a1}

相关问题 更多 >