40 lines
846 B
JavaScript
40 lines
846 B
JavaScript
|
|
t = db.null2;
|
|
t.drop();
|
|
|
|
t.insert({_id: 1, a: [{b: 5}]});
|
|
t.insert({_id: 2, a: [{}]});
|
|
t.insert({_id: 3, a: []});
|
|
t.insert({_id: 4, a: [{}, {b: 5}]});
|
|
t.insert({_id: 5, a: [5, {b: 5}]});
|
|
|
|
function doQuery(query) {
|
|
printjson(query);
|
|
t.find(query).forEach(function(z) {
|
|
print("\t" + tojson(z));
|
|
});
|
|
return t.find(query).count();
|
|
}
|
|
|
|
function getIds(query) {
|
|
var ids = [];
|
|
t.find(query).forEach(function(z) {
|
|
ids.push(z._id);
|
|
});
|
|
return ids;
|
|
}
|
|
|
|
theQueries = [{"a.b": null}, {"a.b": {$in: [null]}}];
|
|
|
|
for (var i = 0; i < theQueries.length; i++) {
|
|
assert.eq(2, doQuery(theQueries[i]));
|
|
assert.eq([2, 4], getIds(theQueries[i]));
|
|
}
|
|
|
|
t.ensureIndex({"a.b": 1});
|
|
|
|
for (var i = 0; i < theQueries.length; i++) {
|
|
assert.eq(2, doQuery(theQueries[i]));
|
|
assert.eq([2, 4], getIds(theQueries[i]));
|
|
}
|