-
Type:
New Feature
-
Resolution: Won't Fix
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: LINQ
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
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.
- depends on
-
SERVER-6146 aggregation framework should have an $in expression
-
- Closed
-
- is depended on by
-
DRIVERS-297 Aggregation Framework Support for 3.4
-
- Closed
-