/usr/include/mongo/db/ops/update.h is in mongodb-dev 1:2.4.9-1ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | //@file update.h
/**
* Copyright (C) 2008 10gen Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "mongo/pch.h"
#include "mongo/db/jsobj.h"
#include "mongo/db/curop.h"
#include "mongo/db/queryoptimizercursor.h"
namespace mongo {
// ---------- public -------------
struct UpdateResult {
const bool existing; // if existing objects were modified
const bool mod; // was this a $ mod
const long long num; // how many objects touched
OID upserted; // if something was upserted, the new _id of the object
UpdateResult( bool e, bool m, unsigned long long n , const BSONObj& upsertedObject )
: existing(e) , mod(m), num(n) {
upserted.clear();
BSONElement id = upsertedObject["_id"];
if ( ! e && n == 1 && id.type() == jstOID ) {
upserted = id.OID();
}
}
};
class RemoveSaver;
/* returns true if an existing object was updated, false if no existing object was found.
multi - update multiple objects - mostly useful with things like $set
su - allow access to system namespaces (super user)
*/
UpdateResult updateObjects(const char* ns,
const BSONObj& updateobj,
const BSONObj& pattern,
bool upsert,
bool multi,
bool logop,
OpDebug& debug,
bool fromMigrate = false,
const QueryPlanSelectionPolicy& planPolicy = QueryPlanSelectionPolicy::any());
/*
* Similar to updateObjects but not strict about applying mods that can fail during initial
* replication.
*
* Reference ticket: SERVER-4781
*/
UpdateResult updateObjectsForReplication(const char* ns,
const BSONObj& updateobj,
const BSONObj& pattern,
bool upsert,
bool multi,
bool logop,
OpDebug& debug,
bool fromMigrate = false,
const QueryPlanSelectionPolicy& planPolicy =
QueryPlanSelectionPolicy::any());
UpdateResult _updateObjects(bool su,
const char* ns,
const BSONObj& updateobj,
const BSONObj& pattern,
bool upsert,
bool multi,
bool logop,
OpDebug& debug,
RemoveSaver* rs = 0,
bool fromMigrate = false,
const QueryPlanSelectionPolicy& planPolicy = QueryPlanSelectionPolicy::any(),
bool forReplication = false);
/**
* takes the from document and returns a new document
* after apply all the operators
* e.g.
* applyUpdateOperators( BSON( "x" << 1 ) , BSON( "$inc" << BSON( "x" << 1 ) ) );
* returns: { x : 2 }
*/
BSONObj applyUpdateOperators( const BSONObj& from, const BSONObj& operators );
} // namespace mongo
|