2017-04-06 67 views
0

我想提出一个Java应用程序,我想插入我的MongoDB的一些数据的ID,但我想用我的财产来替换默认ID如何在MongoDB中插入自己的对象(从Java)

这里是我的代码:

MongoClient mongoClient = new MongoClient("localhost"); 
     DB db = mongoClient.getDB("indexdb"); 
     DBCollection coll = db.getCollection("indexCollection"); 
     for (Map.Entry<String, ReduceResult> rr : directindex.entrySet()) { 
      BasicDBObject doc = new BasicDBObject("DOC", rr.getKey()); 
      Map<String,Integer>wordmap=new HashMap<String,Integer>(); 
      for (Map.Entry<String, Integer> r : rr.getValue().getIndexedFile().entrySet()) { 
       wordmap.put(r.getKey(), r.getValue()); 
      } 
      doc.append("terms", wordmap); 
      coll.insert(doc); 
     } 

输出是

{ "_id" : { "$oid" : "58e5889ce4b02461ad5af080"} , "DOC" : "/home/ion/Desktop/RIW/input/doc4" , "terms" : { "dan" : 1 , "gutui" : 1}} 
{ "_id" : { "$oid" : "58e5889ce4b02461ad5af081"} , "DOC" : "/home/ion/Desktop/RIW/input/doc3" , "terms" : { "bune" : 1 , "gutui" : 1}} 
{ "_id" : { "$oid" : "58e5889ce4b02461ad5af082"} , "DOC" : "/home/ion/Desktop/RIW/input/doc2" , "terms" : { "dan" : 1 , "mere" : 2}} 
{ "_id" : { "$oid" : "58e5889ce4b02461ad5af083"} , "DOC" : "/home/ion/Desktop/RIW/input/doc1" , "terms" : { "ana" : 1 , "mere" : 1 , "pere" : 1}} 

但我想不说“_id”插入我希望我的对象的ID为“DOC” 谁能帮助我?谢谢!!

+0

我不认为你可以完全删除'_id'场。将'DOC'值映射到'_id'或保持原样并在'DOC'上查询。 – Veeram

回答

0

您可以创建自己的字段并将其称为...“id”。在那里你会存储你想要的ID。

在您的收藏模式,你可以告诉蒙戈不创建自动IDS像这样:

// disabled id 
var schema = new Schema({ name: String }, { id: false }); 
var Page = mongoose.model('Page', schema); 
var p = new Page({ name: 'mongodb.org' }); 
console.log(p.id); // undefined 

http://mongoosejs.com/docs/guide.html

相关问题