summaryrefslogtreecommitdiff
path: root/jstests/core/ref.js
blob: 0d1160482fc506a261da5de8700e3713f8f8f4b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
db.otherthings.drop();
db.things.drop();

var other = {s: "other thing", n: 1};
db.otherthings.save(other);

// Verify that the DBPointer prototype is not serializable
assert.throws(function() {
    db.things.save({a: DBPointer.prototype});
});

db.things.save({name: "abc"});
x = db.things.findOne();
x.o = new DBPointer("otherthings", other._id);
db.things.save(x);

assert(db.things.findOne().o.fetch().n == 1, "dbref broken 2");

other.n++;
db.otherthings.save(other);
assert(db.things.findOne().o.fetch().n == 2, "dbrefs broken");

db.getSiblingDB("otherdb").dropDatabase();
var objid = new ObjectId();
db.getSiblingDB("otherdb").getCollection("othercoll").insert({_id: objid, field: "value"});
var subdoc = db.getSiblingDB("otherdb").getCollection("othercoll").findOne({_id: objid});

db.mycoll.drop();
db.mycoll.insert({_id: "asdf", asdf: new DBRef("othercoll", objid, "otherdb")});
var doc = db.mycoll.findOne({_id: "asdf"}, {_id: 0, asdf: 1});
assert.eq(tojson(doc.asdf.fetch()), tojson(subdoc), "otherdb dbref");