2012-12-22 64 views
1

我有一個聯繫表,看起來像:列出具體數據

{ "_id" : "userID1", "_class" : "com.test.Admin", "projectList" : 
[  {  "projectID" : "project1" }, 
     {  "projectID" : "project2" } 
] } 
{ "_id" : "userID2", "_class" : "com.test.Admin", "projectList" : 
[  {  "projectID" : "project3" }, 
     {  "projectID" : "project4" } 
] } 

我需要一種方法來列出所有項目管理集合(即取從每個文檔中所有的「projectList」) 我怎麼能使用java驅動程序進行一個查詢來獲取所有隻有數據的projectList!

我使用的當前方法是獲取所有管理員。 然後編寫一些java代碼來獲得每個管理員的所有項目。 但是,我不喜歡我目前的做法。

+0

是您的要求是一樣的檢查'projectList'不是'null'?你可以在這裏使用匯總框架,但我認爲你的方法可能是最好的 – Sammaye

+0

你的意思是從性能角度來看,Java會比Mongo更好地處理它。就像我在使用SQL一樣,最好是通過SQL Server來完成它! – Echo

回答

0

翻譯給你的Java驅動程序:

db.admin.find({ projectList : {$exists : true}}, {projectList: 1}) 

它檢查每個projectList屬性存在,然後用投影,只返回每個匹配的文檔的projectList屬性。

大概就像(我從來沒有使用Java驅動程序):

query = new BasicDBObject("projectList", new BasicDBObject("$exists", true)); 

cursor = find(query, BasicDBObject("projectList", 1); 
+0

我試過了:DBCollection db = mongoOperations.getCollection(「admin」); (「projectList」,new BasicDBObject(「$ exists」,true))。append(「projectList」,1);基本數據庫對象myQuery = new BasicDBObject(「projectList」 Object result = db.find(myQuery); – Echo

+0

但它只返回一個管理員! – Echo

+0

它返回一個遊標。一次一個。 – WiredPrairie