summaryrefslogtreecommitdiff
path: root/scripting/v8_db.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scripting/v8_db.cpp')
-rw-r--r--scripting/v8_db.cpp22
1 files changed, 15 insertions, 7 deletions
diff --git a/scripting/v8_db.cpp b/scripting/v8_db.cpp
index 5752fde..e178875 100644
--- a/scripting/v8_db.cpp
+++ b/scripting/v8_db.cpp
@@ -297,7 +297,7 @@ namespace mongo {
}
v8::Handle<v8::Value> mongoRemove(const v8::Arguments& args){
- jsassert( args.Length() == 2 , "remove needs 2 args" );
+ jsassert( args.Length() == 2 || args.Length() == 3 , "remove needs 2 args" );
jsassert( args[1]->IsObject() , "have to remove an object template" );
DBClientBase * conn = getConnection( args );
@@ -306,10 +306,15 @@ namespace mongo {
v8::Handle<v8::Object> in = args[1]->ToObject();
BSONObj o = v8ToMongo( in );
+ bool justOne = false;
+ if ( args.Length() > 2 ){
+ justOne = args[2]->BooleanValue();
+ }
+
DDD( "want to remove : " << o.jsonString() );
try {
v8::Unlocker u;
- conn->remove( ns , o );
+ conn->remove( ns , o , justOne );
}
catch ( ... ){
return v8::ThrowException( v8::String::New( "socket error on remove" ) );
@@ -714,11 +719,14 @@ namespace mongo {
v8::Handle<v8::Object> it = args.This();
stringstream ss;
- if ( !it->Has( v8::String::New( "top" ) ) ) {
- ss << "NumberLong( " << it->Get( v8::String::New( "floatApprox" ) )->NumberValue() << " )";
- } else {
- ss << "NumberLong( \"" << numberLongVal( it ) << "\" )";
- }
+ long long val = numberLongVal( it );
+ const long long limit = 2LL << 30;
+
+ if ( val <= -limit || limit <= val )
+ ss << "NumberLong(\"" << val << "\")";
+ else
+ ss << "NumberLong(" << val << ")";
+
string ret = ss.str();
return v8::String::New( ret.c_str() );
}