mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-04 04:46:15 +01:00 
			
		
		
		
	modified: storage/connect/array.cpp modified: storage/connect/blkfil.cpp modified: storage/connect/block.h modified: storage/connect/bson.cpp modified: storage/connect/cmgoconn.cpp modified: storage/connect/colblk.cpp modified: storage/connect/domdoc.cpp modified: storage/connect/filamap.cpp modified: storage/connect/filamdbf.cpp modified: storage/connect/filamfix.cpp modified: storage/connect/filamgz.cpp modified: storage/connect/filamtxt.cpp modified: storage/connect/filamvct.cpp modified: storage/connect/filamzip.cpp modified: storage/connect/filter.cpp modified: storage/connect/filter.h modified: storage/connect/fmdlex.c modified: storage/connect/global.h modified: storage/connect/ha_connect.cc modified: storage/connect/javaconn.cpp modified: storage/connect/javaconn.h modified: storage/connect/jdbconn.cpp modified: storage/connect/jmgfam.cpp modified: storage/connect/json.cpp modified: storage/connect/macutil.cpp modified: storage/connect/macutil.h modified: storage/connect/maputil.cpp modified: storage/connect/mycat.cc modified: storage/connect/myconn.cpp modified: storage/connect/myconn.h modified: storage/connect/myutil.cpp modified: storage/connect/odbconn.cpp modified: storage/connect/odbconn.h modified: storage/connect/os.h modified: storage/connect/osutil.c modified: storage/connect/plgdbsem.h modified: storage/connect/plgdbutl.cpp modified: storage/connect/plugutil.cpp modified: storage/connect/rcmsg.c modified: storage/connect/reldef.cpp modified: storage/connect/reldef.h modified: storage/connect/tabdos.cpp modified: storage/connect/tabext.cpp modified: storage/connect/tabfix.cpp modified: storage/connect/tabfmt.cpp modified: storage/connect/tabjdbc.cpp modified: storage/connect/tabmac.cpp modified: storage/connect/tabmac.h modified: storage/connect/tabmul.cpp modified: storage/connect/tabmul.h modified: storage/connect/tabmysql.cpp modified: storage/connect/taboccur.cpp modified: storage/connect/tabodbc.cpp modified: storage/connect/tabpivot.cpp modified: storage/connect/tabrest.cpp modified: storage/connect/tabrest.h modified: storage/connect/tabsys.cpp modified: storage/connect/tabtbl.cpp modified: storage/connect/tabutil.cpp modified: storage/connect/tabvct.cpp modified: storage/connect/tabwmi.cpp modified: storage/connect/tabxcl.cpp modified: storage/connect/tabxml.cpp modified: storage/connect/valblk.cpp modified: storage/connect/value.cpp modified: storage/connect/xindex.cpp modified: storage/connect/xindex.h - Fix Date errors and SSL warnings modified: storage/connect/mysql-test/connect/r/jdbc.result modified: storage/connect/mysql-test/connect/r/jdbc_new.result modified: storage/connect/mysql-test/connect/t/jdbc.test modified: storage/connect/mysql-test/connect/t/jdbc_new.test - Update java source files modified: storage/connect/Mongo2Interface.java modified: storage/connect/Mongo3Interface.java added: storage/connect/Client2.java added: storage/connect/Client3.java added: storage/connect/TestInsert2.java added: storage/connect/TestInsert3.java
		
			
				
	
	
		
			531 lines
		
	
	
	
		
			12 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			531 lines
		
	
	
	
		
			12 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
package wrappers;
 | 
						|
 | 
						|
import java.util.Date;
 | 
						|
import java.util.List;
 | 
						|
import java.util.Set;
 | 
						|
 | 
						|
import com.mongodb.AggregationOptions;
 | 
						|
import com.mongodb.BasicDBList;
 | 
						|
import com.mongodb.BasicDBObject;
 | 
						|
import com.mongodb.Cursor;
 | 
						|
import com.mongodb.DB;
 | 
						|
import com.mongodb.DBCollection;
 | 
						|
import com.mongodb.DBObject;
 | 
						|
import com.mongodb.MongoClient;
 | 
						|
import com.mongodb.MongoClientURI;
 | 
						|
import com.mongodb.MongoException;
 | 
						|
import com.mongodb.WriteConcernException;
 | 
						|
import com.mongodb.WriteResult;
 | 
						|
import com.mongodb.util.JSON;
 | 
						|
 | 
						|
public class Mongo2Interface {
 | 
						|
	boolean DEBUG = false;
 | 
						|
	String Errmsg = "No error";
 | 
						|
	String ovalName = null;
 | 
						|
	Set<String> Colnames = null;
 | 
						|
	Cursor cursor = null;
 | 
						|
	MongoClient client = null;
 | 
						|
	DB db = null;
 | 
						|
	DBCollection coll = null;
 | 
						|
	BasicDBObject doc = null;
 | 
						|
	BasicDBObject dbq = null;
 | 
						|
	BasicDBObject dbf = null;
 | 
						|
	List<DBObject> pip = null;
 | 
						|
	AggregationOptions aop = null;
 | 
						|
 | 
						|
	// === Constructors/finalize =========================================
 | 
						|
	public Mongo2Interface() {
 | 
						|
		this(false);
 | 
						|
	} // end of default constructor
 | 
						|
 | 
						|
	public Mongo2Interface(boolean b) {
 | 
						|
		DEBUG = b;
 | 
						|
	} // end of constructor
 | 
						|
 | 
						|
	protected void SetErrmsg(String str) {
 | 
						|
		if (DEBUG)
 | 
						|
			System.out.println(str);
 | 
						|
 | 
						|
		Errmsg = str;
 | 
						|
	} // end of SetErrmsg
 | 
						|
 | 
						|
	protected void SetErrmsg(Exception e) {
 | 
						|
		if (DEBUG)
 | 
						|
			System.out.println(e.getMessage());
 | 
						|
 | 
						|
		Errmsg = e.toString();
 | 
						|
	} // end of SetErrmsg
 | 
						|
 | 
						|
	public String GetErrmsg() {
 | 
						|
		String err = Errmsg;
 | 
						|
 | 
						|
		Errmsg = "No error";
 | 
						|
		return err;
 | 
						|
	} // end of GetErrmsg
 | 
						|
 | 
						|
	public int MongoConnect(String[] parms) {
 | 
						|
		int rc = 0;
 | 
						|
 | 
						|
		if (DEBUG)
 | 
						|
			System.out.println("Mongo2: URI=" + parms[0] + " DB=" + parms[1]);
 | 
						|
 | 
						|
		try {
 | 
						|
			MongoClientURI uri = new MongoClientURI(parms[0]);
 | 
						|
 | 
						|
			client = new MongoClient(uri);
 | 
						|
 | 
						|
			if (DEBUG)
 | 
						|
				System.out.println("Connection " + client.toString() + " established");
 | 
						|
 | 
						|
			// Now connect to your databases
 | 
						|
			db = client.getDB(parms[1]);
 | 
						|
 | 
						|
			if (parms[2] != null && !parms[2].isEmpty()) {
 | 
						|
				if (DEBUG)
 | 
						|
					System.out.println("user=" + parms[2] + " pwd=" + parms[3]);
 | 
						|
 | 
						|
				@SuppressWarnings("deprecation")
 | 
						|
				boolean auth = db.authenticate(parms[2], parms[3].toCharArray());
 | 
						|
 | 
						|
				if (DEBUG)
 | 
						|
					System.out.println("Authentication: " + auth);
 | 
						|
 | 
						|
			} // endif user
 | 
						|
 | 
						|
		} catch (MongoException me) {
 | 
						|
			SetErrmsg(me);
 | 
						|
			rc = -1;
 | 
						|
		} catch (Exception e) {
 | 
						|
			SetErrmsg(e);
 | 
						|
			rc = -3;
 | 
						|
		} // end try/catch
 | 
						|
 | 
						|
		return rc;
 | 
						|
	} // end of MongoConnect
 | 
						|
 | 
						|
	public int MongoDisconnect() {
 | 
						|
		int rc = 0;
 | 
						|
 | 
						|
		try {
 | 
						|
			if (cursor != null) {
 | 
						|
				if (DEBUG)
 | 
						|
					System.out.println("Closing cursor");
 | 
						|
 | 
						|
				cursor.close();
 | 
						|
				cursor = null;
 | 
						|
			} // endif client
 | 
						|
 | 
						|
			if (client != null) {
 | 
						|
				if (DEBUG)
 | 
						|
					System.out.println("Closing connection");
 | 
						|
 | 
						|
				client.close();
 | 
						|
				client = null;
 | 
						|
			} // endif client
 | 
						|
 | 
						|
		} catch (MongoException se) {
 | 
						|
			SetErrmsg(se);
 | 
						|
			rc += 8;
 | 
						|
		} // end try/catch
 | 
						|
 | 
						|
		return rc;
 | 
						|
	} // end of MongoDisconnect
 | 
						|
 | 
						|
	public boolean GetCollection(String name) {
 | 
						|
		if (DEBUG)
 | 
						|
			System.out.println("GetCollection: name=" + name);
 | 
						|
 | 
						|
		try {
 | 
						|
			coll = db.getCollection(name);
 | 
						|
		} catch (Exception e) {
 | 
						|
			SetErrmsg(e);
 | 
						|
			return true;
 | 
						|
		} // end try/catch
 | 
						|
 | 
						|
		return false;
 | 
						|
	} // end of GetCollection
 | 
						|
 | 
						|
	public long GetCollSize() {
 | 
						|
		return (coll != null) ? coll.count() : 0;
 | 
						|
	} // end of GetCollSize
 | 
						|
 | 
						|
	public boolean FindColl(String query, String fields) {
 | 
						|
		if (DEBUG)
 | 
						|
			System.out.println("FindColl: query=" + query + " fields=" + fields);
 | 
						|
 | 
						|
		try {
 | 
						|
			if (query != null || fields != null) {
 | 
						|
				dbq = (BasicDBObject) JSON.parse((query != null) ? query : "{}");
 | 
						|
 | 
						|
				if (fields != null) {
 | 
						|
					dbf = (BasicDBObject) JSON.parse(fields);
 | 
						|
					cursor = coll.find(dbq, dbf);
 | 
						|
				} else
 | 
						|
					cursor = coll.find(dbq);
 | 
						|
 | 
						|
			} else
 | 
						|
				cursor = coll.find();
 | 
						|
 | 
						|
		} catch (Exception e) {
 | 
						|
			SetErrmsg(e);
 | 
						|
			return true;
 | 
						|
		} // end try/catch
 | 
						|
 | 
						|
		return false;
 | 
						|
	} // end of FindColl
 | 
						|
 | 
						|
	@SuppressWarnings("unchecked")
 | 
						|
	public boolean AggregateColl(String pipeline) {
 | 
						|
		if (DEBUG)
 | 
						|
			System.out.println("AggregateColl: pipeline=" + pipeline);
 | 
						|
 | 
						|
		try {
 | 
						|
			DBObject pipe = (DBObject) JSON.parse(pipeline);
 | 
						|
 | 
						|
			pip = (List<DBObject>) pipe.get("pipeline");
 | 
						|
			aop = AggregationOptions.builder().batchSize(0).allowDiskUse(true)
 | 
						|
					.outputMode(AggregationOptions.OutputMode.CURSOR).build();
 | 
						|
			cursor = coll.aggregate(pip, aop);
 | 
						|
		} catch (MongoException me) {
 | 
						|
			SetErrmsg(me);
 | 
						|
			return true;
 | 
						|
		} // end try/catch
 | 
						|
 | 
						|
		return false;
 | 
						|
	} // end of AggregateColl
 | 
						|
 | 
						|
	public boolean Rewind() {
 | 
						|
		if (cursor != null)
 | 
						|
			cursor.close();
 | 
						|
 | 
						|
		if (pip == null) {
 | 
						|
			if (dbf != null)
 | 
						|
				cursor = coll.find(dbq, dbf);
 | 
						|
			else if (dbq != null)
 | 
						|
				cursor = coll.find(dbq);
 | 
						|
			else
 | 
						|
				cursor = coll.find();
 | 
						|
 | 
						|
		} else
 | 
						|
			cursor = coll.aggregate(pip, aop);
 | 
						|
 | 
						|
		return (cursor == null);
 | 
						|
	} // end of Rewind
 | 
						|
 | 
						|
	public int ReadNext() {
 | 
						|
		try {
 | 
						|
			if (cursor.hasNext()) {
 | 
						|
				doc = (BasicDBObject) cursor.next();
 | 
						|
 | 
						|
				if (DEBUG)
 | 
						|
					System.out.println("Class doc = " + doc.getClass());
 | 
						|
 | 
						|
				Colnames = doc.keySet();
 | 
						|
				return Colnames.size();
 | 
						|
			} else
 | 
						|
				return 0;
 | 
						|
 | 
						|
		} catch (MongoException me) {
 | 
						|
			SetErrmsg(me);
 | 
						|
			return -1;
 | 
						|
		} // end try/catch
 | 
						|
 | 
						|
	} // end of ReadNext
 | 
						|
 | 
						|
	public boolean Fetch(int row) {
 | 
						|
		if (cursor.hasNext()) {
 | 
						|
			doc = (BasicDBObject) cursor.next();
 | 
						|
			Colnames = doc.keySet();
 | 
						|
			return true;
 | 
						|
		} else
 | 
						|
			return false;
 | 
						|
 | 
						|
	} // end of Fetch
 | 
						|
 | 
						|
	public String GetDoc() {
 | 
						|
		return (doc != null) ? doc.toString() : null;
 | 
						|
	} // end of GetDoc
 | 
						|
 | 
						|
	public Set<String> GetColumns() {
 | 
						|
		if (doc != null)
 | 
						|
			return doc.keySet();
 | 
						|
		else
 | 
						|
			return null;
 | 
						|
 | 
						|
	} // end of GetColumns
 | 
						|
 | 
						|
	public Object ColumnDesc(Object obj, int n, int[] val, int lvl) {
 | 
						|
		Object ret = null;
 | 
						|
		Object oval = ((obj != null) ? obj : doc);
 | 
						|
		BasicDBObject dob = (oval instanceof BasicDBObject) ? (BasicDBObject) oval : null;
 | 
						|
		BasicDBList ary = (oval instanceof BasicDBList) ? (BasicDBList) oval : null;
 | 
						|
 | 
						|
		try {
 | 
						|
			if (ary != null) {
 | 
						|
				oval = ary.get(n);
 | 
						|
				ovalName = Integer.toString(n);
 | 
						|
			} else if (dob != null) {
 | 
						|
				// String[] k = dob.keySet().toArray(new String[0]);
 | 
						|
				Object[] k = dob.keySet().toArray();
 | 
						|
				oval = dob.get(k[n]);
 | 
						|
				ovalName = (String) k[n];
 | 
						|
			} else
 | 
						|
				ovalName = "x" + Integer.toString(n);
 | 
						|
 | 
						|
			if (DEBUG)
 | 
						|
				System.out.println("Class of " + ovalName + " = " + oval.getClass());
 | 
						|
 | 
						|
			val[0] = 0; // ColumnType
 | 
						|
			val[1] = 0; // Precision
 | 
						|
			val[2] = 0; // Scale
 | 
						|
			val[3] = 0; // Nullable
 | 
						|
			val[4] = 0; // ncol
 | 
						|
 | 
						|
			if (oval == null) {
 | 
						|
				val[3] = 1;
 | 
						|
			} else if (oval instanceof String) {
 | 
						|
				val[0] = 1;
 | 
						|
				val[1] = ((String) oval).length();
 | 
						|
			} else if (oval instanceof org.bson.types.ObjectId) {
 | 
						|
				val[0] = 1;
 | 
						|
				val[1] = ((org.bson.types.ObjectId) oval).toString().length();
 | 
						|
			} else if (oval instanceof Integer) {
 | 
						|
				val[0] = 7;
 | 
						|
				val[1] = Integer.toString(((Integer) oval).intValue()).length();
 | 
						|
			} else if (oval instanceof Long) {
 | 
						|
				val[0] = 5;
 | 
						|
				val[1] = Long.toString(((Long) oval).longValue()).length();
 | 
						|
			} else if (oval instanceof Date) {
 | 
						|
				Long TS = (((Date) oval).getTime() / 1000);
 | 
						|
				val[0] = 8;
 | 
						|
				val[1] = TS.toString().length();
 | 
						|
			} else if (oval instanceof Double) {
 | 
						|
				String d = Double.toString(((Double) oval).doubleValue());
 | 
						|
				int i = d.indexOf('.') + 1;
 | 
						|
 | 
						|
				val[0] = 2;
 | 
						|
				val[1] = d.length();
 | 
						|
				val[2] = (i > 0) ? val[1] - i : 0;
 | 
						|
			} else if (oval instanceof Boolean) {
 | 
						|
				val[0] = 4;
 | 
						|
				val[1] = 1;
 | 
						|
			} else if (oval instanceof BasicDBObject) {
 | 
						|
				if (lvl > 0) {
 | 
						|
					ret = oval;
 | 
						|
					val[0] = 1;
 | 
						|
					val[4] = ((BasicDBObject) oval).size();
 | 
						|
				} else if (lvl == 0) {
 | 
						|
					val[0] = 1;
 | 
						|
					val[1] = oval.toString().length();
 | 
						|
				} // endif lvl
 | 
						|
 | 
						|
			} else if (oval instanceof BasicDBList) {
 | 
						|
				if (lvl > 0) {
 | 
						|
					ret = oval;
 | 
						|
					val[0] = 2;
 | 
						|
					val[4] = ((BasicDBList) oval).size();
 | 
						|
				} else if (lvl == 0) {
 | 
						|
					val[0] = 1;
 | 
						|
					val[1] = oval.toString().length();
 | 
						|
				} // endif lvl
 | 
						|
 | 
						|
			} else {
 | 
						|
				SetErrmsg("Type " + " of " + ovalName + " not supported");
 | 
						|
				val[0] = -1;
 | 
						|
			} // endif's
 | 
						|
 | 
						|
			return ret;
 | 
						|
		} catch (Exception ex) {
 | 
						|
			SetErrmsg(ex);
 | 
						|
		} // end try/catch
 | 
						|
 | 
						|
		val[0] = -1;
 | 
						|
		return null;
 | 
						|
	} // end of ColumnDesc
 | 
						|
 | 
						|
	public String ColDescName() {
 | 
						|
		return ovalName;
 | 
						|
	} // end of ColDescName
 | 
						|
 | 
						|
	protected Object GetFieldObject(String path) {
 | 
						|
		Object o = null;
 | 
						|
		BasicDBObject dob = null;
 | 
						|
		BasicDBList lst = null;
 | 
						|
		String[] names = null;
 | 
						|
 | 
						|
		if (path == null || path.equals("") || path.equals("*"))
 | 
						|
			return doc;
 | 
						|
		else if (doc instanceof BasicDBObject)
 | 
						|
			dob = doc;
 | 
						|
		// else if (o instanceof BasicDBList)
 | 
						|
		// lst = (BasicDBList) doc;
 | 
						|
		else
 | 
						|
			return doc;
 | 
						|
 | 
						|
		try {
 | 
						|
			names = path.split("\\.");
 | 
						|
 | 
						|
			for (String name : names) {
 | 
						|
				if (lst != null) {
 | 
						|
					o = lst.get(Integer.parseInt(name));
 | 
						|
				} else
 | 
						|
					o = dob.get(name);
 | 
						|
 | 
						|
				if (o == null)
 | 
						|
					break;
 | 
						|
 | 
						|
				if (DEBUG)
 | 
						|
					System.out.println("Class o = " + o.getClass());
 | 
						|
 | 
						|
				if (o instanceof BasicDBObject) {
 | 
						|
					dob = (BasicDBObject) o;
 | 
						|
					lst = null;
 | 
						|
				} else if (o instanceof BasicDBList) {
 | 
						|
					lst = (BasicDBList) o;
 | 
						|
				} else
 | 
						|
					break;
 | 
						|
 | 
						|
			} // endfor name
 | 
						|
 | 
						|
		} catch (IndexOutOfBoundsException x) {
 | 
						|
			o = null;
 | 
						|
		} catch (MongoException se) {
 | 
						|
			SetErrmsg(se);
 | 
						|
			o = null;
 | 
						|
		} // end try/catch
 | 
						|
 | 
						|
		return o;
 | 
						|
	} // end of GetFieldObject
 | 
						|
 | 
						|
	public String GetField(String path) {
 | 
						|
		Object o = GetFieldObject(path);
 | 
						|
 | 
						|
		if (o != null) {
 | 
						|
			if (o instanceof Date) {
 | 
						|
				Long TS = (((Date) o).getTime() / 1000);
 | 
						|
				return TS.toString();
 | 
						|
			} else if (o instanceof Boolean)
 | 
						|
				return (Boolean) o ? "1" : "0";
 | 
						|
 | 
						|
			return o.toString();
 | 
						|
		} else
 | 
						|
			return null;
 | 
						|
 | 
						|
	} // end of GetField
 | 
						|
 | 
						|
	public Object MakeBson(String s, int json) {
 | 
						|
		if (json == 1 || json == 2) {
 | 
						|
			return com.mongodb.util.JSON.parse(s);
 | 
						|
		} else
 | 
						|
			return null;
 | 
						|
 | 
						|
	} // end of MakeBson
 | 
						|
 | 
						|
	public Object MakeDocument() {
 | 
						|
		return new BasicDBObject();
 | 
						|
	} // end of MakeDocument
 | 
						|
 | 
						|
	public boolean DocAdd(Object bdc, String key, Object val, int json) {
 | 
						|
		try {
 | 
						|
			if (json != 0 && val instanceof String)
 | 
						|
				((BasicDBObject) bdc).append(key, JSON.parse((String) val));
 | 
						|
			else
 | 
						|
				((BasicDBObject) bdc).append(key, val);
 | 
						|
 | 
						|
		} catch (MongoException me) {
 | 
						|
			SetErrmsg(me);
 | 
						|
			return true;
 | 
						|
		} // end try/catch
 | 
						|
 | 
						|
		return false;
 | 
						|
	} // end of DocAdd
 | 
						|
 | 
						|
	public Object MakeArray() {
 | 
						|
		return new BasicDBList();
 | 
						|
	} // end of MakeArray
 | 
						|
 | 
						|
	public boolean ArrayAdd(Object bar, int n, Object val, int json) {
 | 
						|
		try {
 | 
						|
			if (json != 0 && val instanceof String)
 | 
						|
				((BasicDBList) bar).put(n, JSON.parse((String) val));
 | 
						|
			else
 | 
						|
				((BasicDBList) bar).put(n, val);
 | 
						|
 | 
						|
		} catch (MongoException me) {
 | 
						|
			SetErrmsg(me);
 | 
						|
			return true;
 | 
						|
		} catch (Exception ex) {
 | 
						|
			SetErrmsg(ex);
 | 
						|
			return true;
 | 
						|
		} // end try/catch
 | 
						|
 | 
						|
		return false;
 | 
						|
	} // end of ArrayAdd
 | 
						|
 | 
						|
	public boolean CollInsert(Object dob) {
 | 
						|
		try {
 | 
						|
			coll.insert((BasicDBObject) dob);
 | 
						|
		} catch (MongoException me) {
 | 
						|
			SetErrmsg(me);
 | 
						|
			return true;
 | 
						|
		} catch (Exception ex) {
 | 
						|
			SetErrmsg(ex);
 | 
						|
			return true;
 | 
						|
		} // end try/catch
 | 
						|
 | 
						|
		return false;
 | 
						|
	} // end of CollInsert
 | 
						|
 | 
						|
	public long CollUpdate(Object upd) {
 | 
						|
		long n = -1;
 | 
						|
 | 
						|
		if (DEBUG)
 | 
						|
			System.out.println("upd: " + upd.toString());
 | 
						|
 | 
						|
		try {
 | 
						|
			DBObject qry = new BasicDBObject("_id", doc.get("_id"));
 | 
						|
 | 
						|
			WriteResult res = coll.update(qry, (DBObject) upd);
 | 
						|
 | 
						|
			if (DEBUG)
 | 
						|
				System.out.println("CollUpdate: " + res.toString());
 | 
						|
 | 
						|
			n = res.getN();
 | 
						|
		} catch (MongoException me) {
 | 
						|
			SetErrmsg(me);
 | 
						|
		} catch (Exception ex) {
 | 
						|
			SetErrmsg(ex);
 | 
						|
		} // end try/catch
 | 
						|
 | 
						|
		return n;
 | 
						|
	} // end of CollUpdate
 | 
						|
 | 
						|
	public long CollDelete(boolean all) {
 | 
						|
		long n = -1;
 | 
						|
 | 
						|
		try {
 | 
						|
			WriteResult res;
 | 
						|
			BasicDBObject qry = new BasicDBObject();
 | 
						|
 | 
						|
			if (!all)
 | 
						|
				qry.append("_id", doc.get("_id"));
 | 
						|
 | 
						|
			res = coll.remove(qry);
 | 
						|
 | 
						|
			if (DEBUG)
 | 
						|
				System.out.println("CollDelete: " + res.toString());
 | 
						|
 | 
						|
			n = res.getN();
 | 
						|
		} catch (WriteConcernException wx) {
 | 
						|
			SetErrmsg(wx);
 | 
						|
		} catch (MongoException me) {
 | 
						|
			SetErrmsg(me);
 | 
						|
		} catch (UnsupportedOperationException ux) {
 | 
						|
			SetErrmsg(ux);
 | 
						|
			n = 0;
 | 
						|
		} // end try/catch
 | 
						|
 | 
						|
		return n;
 | 
						|
	} // end of CollDelete
 | 
						|
 | 
						|
} // end of class MongoInterface
 |