summaryrefslogtreecommitdiff
path: root/jstests/core/verify_update_mods.js
blob: efd0beb80ccdc2c4a456fad1a3e7ff361029feb0 (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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// Verify update mods exist
var res;
t = db.update_mods;
t.drop();

t.save({_id: 1});
res = t.update({}, {$set: {a: 1}});
assert.writeOK(res);
t.remove({});

t.save({_id: 1});
res = t.update({}, {$unset: {a: 1}});
assert.writeOK(res);
t.remove({});

t.save({_id: 1});
res = t.update({}, {$inc: {a: 1}});
assert.writeOK(res);
t.remove({});

t.save({_id: 1});
res = t.update({}, {$mul: {a: 1}});
assert.writeOK(res);
t.remove({});

t.save({_id: 1});
res = t.update({}, {$push: {a: 1}});
assert.writeOK(res);
t.remove({});

t.save({_id: 1});
res = t.update({}, {$pushAll: {a: [1]}});
assert.writeOK(res);
t.remove({});

t.save({_id: 1});
res = t.update({}, {$addToSet: {a: 1}});
assert.writeOK(res);
t.remove({});

t.save({_id: 1});
res = t.update({}, {$pull: {a: 1}});
assert.writeOK(res);
t.remove({});

t.save({_id: 1});
res = t.update({}, {$pop: {a: true}});
assert.writeOK(res);
t.remove({});

t.save({_id: 1});
res = t.update({}, {$rename: {a: "b"}});
assert.writeOK(res);
t.remove({});

t.save({_id: 1});
res = t.update({}, {$bit: {a: {and: NumberLong(1)}}});
assert.writeOK(res);
t.remove({});

// SERVER-3223 test $bit can do an upsert
t.update({_id: 1}, {$bit: {a: {and: NumberLong(3)}}}, true);
assert.eq(t.findOne({_id: 1}).a, NumberLong(0), "$bit upsert with and");
t.update({_id: 2}, {$bit: {b: {or: NumberLong(3)}}}, true);
assert.eq(t.findOne({_id: 2}).b, NumberLong(3), "$bit upsert with or (long)");
t.update({_id: 3}, {$bit: {"c.d": {or: NumberInt(3)}}}, true);
assert.eq(t.findOne({_id: 3}).c.d, NumberInt(3), "$bit upsert with or (int)");
t.remove({});

t.save({_id: 1});
res = t.update({}, {$currentDate: {a: true}});
assert.writeOK(res);
t.remove({});

t.save({_id: 1});
res = t.update({}, {$max: {a: 1}});
assert.writeOK(res);
t.remove({});

t.save({_id: 1});
res = t.update({}, {$min: {a: 1}});
assert.writeOK(res);
t.remove({});