$ gte和$ lte与numberint在mongodb中无法正常工作

时间:2019-11-14 06:13:00

标签: json mongodb

我正在尝试检索在一定范围内至少具有一个'cov.res.timestamp'条目的文档。

{'cov.res.timestamp': {
        $gte: 1571424600,
        $lte: 1571597580
      }}

它列出了不属于此范围的文档,我在这里做错什么了?

这是我的示例文档

"cov" : [
        {
            "order" : NumberInt(1), 
            "res" : {
                "text" : [
                    "Start the conversation!"
                ], 
                "source" : "watson", 
                "timestamp" : NumberInt(1566020214), 
                "timestamp_hr" : "17-08-2019 05:36:54"
            }
            "res":{},
            "res":{},
]

2 个答案:

答案 0 :(得分:1)

不确定您要执行的操作,但默认情况下条件是错误的mongodb和条件,因此您需要$或输入类型,因此这里提供了fixes选项:

{
  $or: [{
        'cov.res.timestamp': {
          $gte: 1571424600,
          $exists: true,
        },
        'cov.res.timestamp': {
            $lte: 1571597580,
            $exists: true,
          }
        }
      ]
  }

或者您需要

{
     'cov.res.timestamp': {
        $lte: 1571424600,
        $gte: 1571597580
      }
}

Bhushan的回答是正确的,我以某种方式错过了数组:

 db.xxxxx.aggregate(
    [
    // Stage 1
    {
        $unwind: {
            path : "$cov",
            includeArrayIndex : "arrayIndex", // optional
            preserveNullAndEmptyArrays : false // optional
        }
    },
    // Stage 2
    {
        $match:{
            "cov.res.timestamp": {
                $gte:1571597580,
                $lte:1571424600
                }} 
    }
])

答案 1 :(得分:1)

@epsan,您好,您提到您要显示满足数组 conv

的至少一个元素的以下条件的整个文档
    inches = (3,3)
    dpi = 150
    fig, ax = plt.subplots(figsize=inches, dpi=dpi)
    fig.subplots_adjust(left=0, right=1, top=1, bottom=0, wspace=0, hspace=0)
    ax.imshow(df_data, cmap='gray', vmin=-100, vmax=300)

    fig.save('copy-without-whitespace.png')

您尝试在2019年10月18日至20日之间获取数据 通过生成虚拟数据进行了测试 该查询是正确的,只需交叉检查其他元素 res 为了只获得订单匹配条件,我建议使用聚合。

{'cov.res.timestamp': {
    $gte: 1571424600,
    $lte: 1571597580
  }}