how to match both fields are not exist

632 Views Asked by At
  1. I was trying to use $and to express both fields are empty
  2. Here is the code
    db.tweets_v2.aggregate({
      {match:{$and:[{replyto_id:$exist:false},{replyto_id:$exist:false}]}
    });
2

There are 2 best solutions below

0
On BEST ANSWER

There are few fixes,

  • $exist should be $exists
  • missed {} brackets before and after in $exists
  • match should be $match
  • aggregation stages start from [] not {}
db.tweets_v2.aggregate([
  {
    $match: {
      $and: [
        { replyto_id: { $exists: false } },
        { replyfrom_id: { $exists: false } } // change your second field name
      ]
    }
  }
])

Playground

1
On

Actually the $and is not needed, this one will also work:

db.tweets_v2.aggregate([
  {
    $match: {
        replyto_id: { $exists: false } ,
        replyfrom_id: { $exists: false }
    }
  }
])