50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
|
|
t = db.getCollection("where1");
|
|
t.drop();
|
|
|
|
t.save({a: 1});
|
|
t.save({a: 2});
|
|
t.save({a: 3});
|
|
|
|
assert.eq(1,
|
|
t.find(function() {
|
|
return this.a == 2;
|
|
}).length(),
|
|
"A");
|
|
|
|
assert.eq(1, t.find({$where: "return this.a == 2"}).toArray().length, "B");
|
|
assert.eq(1, t.find({$where: "this.a == 2"}).toArray().length, "C");
|
|
|
|
assert.eq(1, t.find("this.a == 2").toArray().length, "D");
|
|
|
|
// SERVER-12117
|
|
// positional $ projection should fail on a $where query
|
|
assert.throws(function() {
|
|
t.find({$where: "return this.a;"}, {'a.$': 1}).itcount();
|
|
});
|
|
|
|
// SERVER-12439: $where must be top-level
|
|
assert.throws(function() {
|
|
t.find({a: 1, b: {$where: "this.a;"}}).itcount();
|
|
});
|
|
assert.throws(function() {
|
|
t.find({a: {$where: "this.a;"}}).itcount();
|
|
});
|
|
assert.throws(function() {
|
|
t.find({a: {$elemMatch: {$where: "this.a;"}}}).itcount();
|
|
});
|
|
assert.throws(function() {
|
|
t.find({a: 3, "b.c": {$where: "this.a;"}}).itcount();
|
|
});
|
|
|
|
// SERVER-13503
|
|
assert.throws(function() {
|
|
t.find({a: {$elemMatch: {$where: "this.a;", b: 1}}}).itcount();
|
|
});
|
|
assert.throws(function() {
|
|
t.find({a: {$elemMatch: {b: 1, $where: "this.a;"}}}).itcount();
|
|
});
|
|
assert.throws(function() {
|
|
t.find({a: {$elemMatch: {$and: [{b: 1}, {$where: "this.a;"}]}}}).itcount();
|
|
});
|