Skip to content

Commit 11559c9

Browse files
committed
SERVER-6582 - find_and_modify - set lastErrorObject fields in some cases like older versions
1 parent cbc8b6e commit 11559c9

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
2+
t = db.find_and_modify_server6582;
3+
4+
t.drop();
5+
x = t.runCommand( "findAndModify" , {query:{f:1}, update:{$set:{f:2}}, upsert:true, new:true})
6+
le = x.lastErrorObject
7+
assert.eq( le.updatedExisting, false )
8+
assert.eq( le.n, 1 )
9+
assert.eq( le.upserted, x.value._id )
10+
11+
t.drop();
12+
t.insert( { f : 1 } )
13+
x = t.runCommand( "findAndModify" , {query:{f:1}, remove : true } )
14+
le = x.lastErrorObject
15+
assert.eq( le.n, 1 )
16+
17+
18+

src/mongo/db/commands/find_and_modify.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,9 @@ namespace mongo {
156156
_appendHelper( result , doc , found , fields );
157157
if ( found ) {
158158
deleteObjects( ns.c_str() , queryModified , true , true );
159+
BSONObjBuilder le( result.subobjStart( "lastErrorObject" ) );
160+
le.appendNumber( "n" , 1 );
161+
le.done();
159162
}
160163
}
161164
else {
@@ -182,6 +185,13 @@ namespace mongo {
182185
_appendHelper( result , doc , true , fields );
183186
}
184187

188+
BSONObjBuilder le( result.subobjStart( "lastErrorObject" ) );
189+
le.appendBool( "updatedExisting" , res.existing );
190+
le.appendNumber( "n" , res.num );
191+
if ( res.upserted.isSet() )
192+
le.append( "upserted" , res.upserted );
193+
le.done();
194+
185195
}
186196
}
187197

0 commit comments

Comments
 (0)