我正在使用mongo mongo java驱动程序版本2.11.2。我想在我的dbin mongodb中插入一些文档,当我尝试从命令行执行它时,一切正常。但是当我使用mongo java驱动程序时,它无法正常工作。我正在使用BasicDBObject
来填充文档。但collection.insert(BasicDBObject).getN()
总是给我0。什么都没有插入到集合中。我在这里错过了什么吗?
添加代码:
mongo = new MongoClient("localhost", 27017);
DB db = mongo.getDB("db");
DBCollection collection = db.getCollection("collection");
BasicDBObject o = new BasicDBObject();
o.put("key1", "value1");
o.put("key2", "value2");
collection.insert(o);
此后数据库中没有更新。
答案 0 :(得分:2)
插入的getlasterror中的'n'值始终为零。 ('n'值是WriteResult.getN()返回的值。)
查看此MongoDB Jira票证:https://jira.mongodb.org/browse/SERVER-4381。已关闭,优先于新的插入,更新,删除机制:https://jira.mongodb.org/browse/SERVER-9038
长话短说。你没有生气或遗失任何东西。它是MongoDB的一个“特性”,希望最终能够在2.6版本中得到修复。
罗布。
编辑:
我稍微修改了你的例子来打印保存的文件。你能尝试在你的环境中运行这个版本吗?
import java.net.UnknownHostException;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import com.mongodb.WriteConcern;
public class StackOverFlow {
public static void main(String[] args) throws UnknownHostException {
MongoClient mongo = new MongoClient("localhost:27017");
DB db = mongo.getDB("db");
DBCollection collection = db.getCollection("collection");
BasicDBObject o = new BasicDBObject();
o.put("key1", "value1");
o.put("key2", "value2");
collection.insert(WriteConcern.SAFE, o);
for (DBObject doc : collection.find()) {
System.out.println(doc);
}
}
}
在我的机器上输出:
{ "_id" : { "$oid" : "5235f98495302901eb70e7a4"} , "key1" : "value1" , "key2" : "value2"}