Uploaded image for project: 'C# Driver'
  1. C# Driver
  2. CSHARP-1634

aggregation framework should have an $in expression

    XMLWordPrintable

Details

    • New Feature
    • Status: Closed
    • Major - P3
    • Resolution: Won't Fix
    • None
    • None
    • Linq
    • None

    Description

      Syntax

      {$in: [<arbitrary expression>, <arbitrary array expression>]}
      

      Examples

      db.coll.insert([
        {_id: 0, x: "Bob"}
      ]);
      > db.coll.aggregate([{
        $project: {
          hasBobOrRob: {$in: ["$x", ["Bob", "Rob"]]}
        }
      }]);
      {_id: 0, hasBobOrRob: true}
       
      // Example 2
      > db.coll.insert([
        {_id: 0, x: "aaa"},
        {_id: 1, x: /^a/}
      ]);
      > db.coll.aggregate([{
        $project: {
          matches: {$in: ["$x", [/^a/]]}
        }
      }])
      {_id: 0, matches: false}
      {_id: 1, matches: true}
      // Note the intentional inconsistency.
      > db.foo.find({x: {$in: [/^a/]}})
      {_id: 0, x: "aaa"}
      {_id: 1, x: /^a/}
      

      Notes

      • Should result in the same values as a $in in a MatchExpression (except with regexes).
      • Should not do regex matching if the values in the array are regexes.
      • This is different from what the query system does, a query predicate of {x: {$in: [/^a/]} will find strings which start with "a". This is arguably a bug in query, and will not be duplicated here.

      Errors

      • If the second expression is not an array.
      • If there are not two arguments passed to the expression.

      Old Description
      Currently expressions like $eq, $ne, $gt, etc are supported but there is no $in available to test set membership.

      Attachments

        Issue Links

          Activity

            People

              craig.wilson@mongodb.com Craig Wilson
              rathi.gnanasekaran Rathi Gnanasekaran
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: