MongoDB -数组与字段中的对象总数

ftf50wuq  于 2023-01-25  发布在  Go
关注(0)|答案(2)|浏览(141)

我需要获取“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,但是都没有成功。提前感谢!

bvjxkvbb

bvjxkvbb1#

质询

  • $size可以给予数组的大小,我们可以将它与media_count进行比较
  • 第一个查询保留大小不正确的文档
  • 第二个查询保留大小正确的文档

Playmongo

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

Playmongo

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

q35jwt9p2#

谢谢你的回应!这让我走上了正确的轨道,我最终这样写:

[{
 $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'
}]

相关问题