2012-07-15 26 views
2

我想通過mongodb.from一個簡單的文件通過java查詢來訪問嵌入式文件,它很容易但是我們如何從嵌入式文件中訪問?我們如何通過java驅動程序查詢嵌入式文檔?

+1

你任何機會問這個問題的文件。我如何執行提取嵌入式文檔並將其返回的查詢?如果是這種情況,你不能使用查詢。在2.2中,你可以使用聚合框架來做到這一點,但它仍然可以更高效地執行普通查詢並在代碼中處理它。 – christkv 2012-07-15 08:46:46

回答

7

如果我理解正確,你可以在下面找到你的問題的答案。

假設您有以下嵌套文檔。

{ "key1" : "value1", 
    "key2" : { 
      "key21" : "value21", 
      "key22" : "value22" 
      } 
} 

如果您的意思是在嵌套文檔上進行查詢,則可以使用以下java代碼訪問嵌入對象。

DBCollection coll = db.getCollection("collectionName"); 
BasicDBObject query = new BasicDBObject(); 
query.put("key2.key21", new BasicDBObject("$eq", "value21")); 
DBCursor cur = coll.find(query); 

如果你的意思是提取文檔嵌入文檔,那麼你可以使用 Map/ReduceAggregation framework.

伊恩·丹尼爾仍然添加的代碼插入你問的嵌套文檔。您還可以訪問this頁面查看一些詳細的示例。

+0

$ eq在這裏做什麼?我們可以插入像上面的嵌套文件,我試過這個 '代碼' – jad001 2012-07-15 17:33:27

+0

'BasicDBObject doc = new BasicDBObject(); (「Name.FirstName」,新的BasicDBObject(「$ set」,nam)); (「Name.LastName」,新的BasicDBObject(「$ set」,nam1)); coll.insert(doc):' 其中nam和nam1是字符串,我正在通過用戶輸入的textfields幷包含名字和姓氏 因此,在最後我想要顯示mongDB我的集合是這樣的: ' ID:23 {Name:{「FirstName」:「Ahmad」 「SecondName」:「Khan」}' 但它不工作 我希望你能理解我的問題 – jad001 2012-07-15 17:50:32

+0

謝謝你的代碼:)它的工作原理是尋找,但現在我想插入?我已經給了我上面的示例代碼,但它不工作 – jad001 2012-07-15 17:53:42

4

下面的Java代碼將插入表單{ID:23 {Name:{"FirstName": "Ahmad", "SecondName":"Khan"}}

Mongo mongo = new Mongo(); 
DB db = mongo.getDB("test"); 
DBCollection people = db.getCollection("people"); 

BasicDBObject name = new BasicDBObject(); 
name.put("FirstName", "Ahmad"); 
name.put("LastName", "Khan"); 

BasicDBObject person = new BasicDBObject(); 
person.put("ID", 23); 
person.put("Name", name); 

people.insert(person); 
相關問題