mirror of
https://github.com/mongodb/mongo.git
synced 2024-12-01 01:21:03 +01:00
50 lines
1.6 KiB
JavaScript
50 lines
1.6 KiB
JavaScript
// Test aggregating a sharded collection while using $graphLookup on an unsharded collection.
|
|
(function() {
|
|
'use strict';
|
|
|
|
const st = new ShardingTest({shards: 2, rs: {nodes: 1}});
|
|
|
|
assert.commandWorked(st.s0.adminCommand({enablesharding: "test"}));
|
|
assert.commandWorked(st.s0.adminCommand({shardCollection: "test.foo", key: {_id: "hashed"}}));
|
|
|
|
let db = st.s0.getDB("test");
|
|
|
|
assert.writeOK(db.foo.insert([{}, {}, {}, {}]));
|
|
assert.writeOK(db.bar.insert({_id: 1, x: 1}));
|
|
|
|
const res = db.foo
|
|
.aggregate([{
|
|
$graphLookup: {
|
|
from: "bar",
|
|
startWith: {$literal: 1},
|
|
connectFromField: "x",
|
|
connectToField: "_id",
|
|
as: "res"
|
|
}
|
|
}])
|
|
.toArray();
|
|
|
|
assert.eq(res.length, 4);
|
|
res.forEach(function(c) {
|
|
assert.eq(c.res.length, 1);
|
|
assert.eq(c.res[0]._id, 1);
|
|
assert.eq(c.res[0].x, 1);
|
|
});
|
|
|
|
// Be sure $graphLookup is banned on sharded foreign collection.
|
|
assert.commandWorked(st.s0.adminCommand({shardCollection: "test.baz", key: {_id: "hashed"}}));
|
|
assert.commandWorked(db.baz.insert({_id: 1, x: 1}));
|
|
const err = assert.throws(() => db.foo.aggregate([{
|
|
$graphLookup: {
|
|
from: "baz",
|
|
startWith: {$literal: 1},
|
|
connectFromField: "x",
|
|
connectToField: "_id",
|
|
as: "res"
|
|
}
|
|
}]));
|
|
assert.eq(28769, err.code);
|
|
|
|
st.stop();
|
|
})();
|