> db.createCollection('testio', {
|
... validator: { $or: [
|
... { dbRefsMember: { $exists: false } },
|
... {
|
... $and: [
|
... { dbRefsMember: { $type: 'object' } },
|
... { 'dbRefsMember._id': { $exists: false } }
|
... ]
|
... }
|
... ] }
|
... });
|
{ "ok" : 1 }
|
> db.testio.insert({existsFalseValidatesThis:'asItShould'})
|
WriteResult({ "nInserted" : 1 })
|
> db.testio.insert({dbRefsMember:[{_id: 1, thisGuy: 'shouldAndWillBeRejected'}]})
|
WriteResult({
|
"nInserted" : 0,
|
"writeError" : {
|
"code" : 121,
|
"errmsg" : "Document failed validation"
|
}
|
})
|
> db.testio.insert({dbRefsMember:[false, {_id: 1, thisGuy: 'shouldAndWillAlsoBeRejected'}]})
|
WriteResult({
|
"nInserted" : 0,
|
"writeError" : {
|
"code" : 121,
|
"errmsg" : "Document failed validation"
|
}
|
})
|
> db.testio.insert({dbRefsMember:[1, {thisGuy: 'shouldButWillNotBeRejected'}]})
|
WriteResult({ "nInserted" : 1 })
|
> db.testio.insert({more:1})
|
WriteResult({ "nInserted" : 1 })
|
> db.testio.update({more:1}, {$set: {dbRefsMember: []}})
|
WriteResult({
|
"nMatched" : 0,
|
"nUpserted" : 0,
|
"nModified" : 0,
|
"writeError" : {
|
"code" : 121,
|
"errmsg" : "Document failed validation"
|
}
|
})
|
> db.testio.update({more:1}, {$set: {dbRefsMember: [1]}})
|
WriteResult({
|
"nMatched" : 0,
|
"nUpserted" : 0,
|
"nModified" : 0,
|
"writeError" : {
|
"code" : 121,
|
"errmsg" : "Document failed validation"
|
}
|
})
|
> db.testio.update({more:1}, {$set: {dbRefsMember: [DBRef('something', ObjectId())]}})
|
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
|
> db.testio.update({more:1}, {$push: {dbRefsMember: 1}})
|
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
|
> db.testio.update({more:1}, {$push: {dbRefsMember: false}})
|
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
|
> db.testio.update({more:1}, {$push: {dbRefsMember: {_id: 'anotherViolationButThisTimeNotOnTheType'}}})
|
WriteResult({
|
"nMatched" : 0,
|
"nUpserted" : 0,
|
"nModified" : 0,
|
"writeError" : {
|
"code" : 121,
|
"errmsg" : "Document failed validation"
|
}
|
})
|
> db.testio.findOne({more:1})
|
{
|
"_id" : ObjectId("59d63137f402d1a9c67ea8ef"),
|
"more" : 1,
|
"dbRefsMember" : [
|
DBRef("something", ObjectId("59d63164f402d1a9c67ea8f0")),
|
1,
|
false
|
]
|
}
|
> db.testio.insert({more:2}, {$set: {dbRefsMember: [1,2,3,false,'aString',DBRef('something', ObjectId())]}})
|
WriteResult({ "nInserted" : 1 })
|