2013-04-16 44 views
0

我在想,如果MongoDB提供了一些很好的模式來識別數據庫中的文檔。假設我有初始化像這樣的數據庫:如何在Java中的MongoDB中識別文檔

public static void main(String[] args) { 

MongoClient mongo = new MongoClient("localhost", 27017); 
DB db = mongo.getDB("testdb"); 

DBCollection coll = db.getCollection("mycollection"); 

BasicDBObject document = new BasicDBObject(); 
document.put("name", "Mike"); 
document.put("age", 25); 
coll.insert(document); 
} 

現在我怎樣才能插入到數據庫中的「文件」?我已經知道一個鍵/值對查詢可以找到的文件,如:

BasicDBObject query = new BasicDBObject(); 
query.put("name", "Mike"); 
DBObject dbObj = coll.findOne(query); 

難道還有比這種鍵/值對的查詢,以確定該文件的其他另一種方式?

如果你想找出一個集合,你可以做到這一點通過集合名稱相匹配:

DBCollection coll = db.getCollection("mycollection"); 

我希望有這樣的事情來識別文件。任何建議?

回答

1

如果您在coll.insert(document);之後查看document對象,您會發現驅動程序添加了_id字段。您可以使用此字段/值來查詢確切的文檔,因爲MongoDB強制執行該字段必須有_id字段,並且它必須是唯一的。

把所有這些組合起來:

public static void main(String[] args) { 

    MongoClient mongo = new MongoClient("localhost", 27017); 
    DB db = mongo.getDB("testdb"); 

    DBCollection coll = db.getCollection("mycollection"); 

    BasicDBObject document = new BasicDBObject(); 
    document.put("name", "Mike"); 
    document.put("age", 25); 
    coll.insert(document); 

    System.out.println(document.get("_id")); 

    BasicDBObject query = new BasicDBObject(); 
    query.put("_id" , document.get("_id")); 

    DBObject retrieved = collection.findOne(query); 
    System.out.println(retrieved); 
} 
相關問題