【问题标题】:MongoDB - Total number of objects in array vs fieldMongoDB - 数组与字段中的对象总数
【发布时间】:2023-01-23 21:36:33
【问题描述】:

我需要获取“photo”数组字段中对象的总数,并将其与“mls_media_count”字段中的值进行比较,以便我可以检测到值何时不匹配。

    open_houses:null
    open_houses_lock:false
    photos:Array
         0:Object
         1:Object
         2:Object
         3:Object
         4:Object
         5:Object
         6:Object
         7:Object
         8:Object
         9:Object
     mls_media_count: 8

我试过使用 $unwind、$project、$size,但没能成功。 提前致谢!

【问题讨论】:

  • 请提供足够的代码,以便其他人可以更好地理解或重现问题。

标签: arrays mongodb mongodb-query aggregation-framework


【解决方案1】:

询问

  • $size可以给出数组的大小,我们可以和media_count比较
  • 第一个查询保留大小不正确的文档
  • 第二个查询保留大小正确的文档

Playmongo

aggregate(
[{"$match": 
   {"$expr": {"$ne": [{"$size": "$photos"}, "$mls_media_count"]}}}])

Playmongo

aggregate(
[{"$match": 
   {"$expr": {"$eq": [{"$size": "$photos"}, "$mls_media_count"]}}}])

【讨论】:

    【解决方案2】:

    谢谢你的回应!这让我走上正轨,最后我这样写:

        [{
     $match: {version: '5'
     }
    }, {
     $project: {
      item: -1,
      Photos: {
       $cond: {
        'if': {
         $isArray: '$photos'
        },
        then: {
         $size: '$photos'
        },
        'else': 'NA'
       }
      },
      mls_number: 1,
      mls_media_count: 1,
      'system.kw_photo_count': 1
     }
    }, {
     $match: {
      $expr: {
       $ne: [
        '$Photos',
        '$mls_media_count'
       ]
      }
     }
    }, {
     $count: 'list_id'
    }] 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-03
      • 1970-01-01
      • 2021-01-09
      • 2020-07-17
      • 2020-07-04
      • 1970-01-01
      • 1970-01-01
      • 2014-08-21
      相关资源
      最近更新 更多