| Steps To Reproduce: |
u = {}
|
u._id = ObjectId()
|
db.u.drop()
|
db.u.insert(u)
|
doc = db.u.findOne({ _id: u._id }) // { "_id" : ObjectId("50f847b777c54f68d526c7a0") }
|
Object.defineProperty(doc, 'works', { value: true, enumerable: true }) // { "_id" : ObjectId("50f847b777c54f68d526c7a0"), "works" : true }
|
db.u.remove()
|
db.u.insert(doc)
|
db.u.findOne({ _id: doc._id }) // { "_id" : ObjectId("50f847b777c54f68d526c7a0") }
|
print(doc.works) // undefined <== expected `true`
|
Note that enumerable properties added to an object not returned from a query ARE saved (correct behavior).
db.u.drop()
|
u = {}
|
u._id = ObjectId()
|
Object.defineProperty(u, 'works', { value: true, enumerable: true })
|
db.u.insert(u)
|
doc = db.u.findOne({ _id: u._id })
|
print(doc.works) // `true`
|
|