1

次のような管理テーブルがあります。

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

Admin コレクション内のすべてのプロジェクトを一覧表示する方法が必要です (つまり、各ドキュメントからすべての "projectList" を取得します) データのみを含むすべての projectList を取得するために、Java ドライバーを使用して 1 つのクエリを作成するにはどうすればよいでしょうか!

私が現在使用しているアプローチは、すべての管理者を取得することです。次に、各管理者からすべてのプロジェクトを取得する Java コードを記述します。しかし、私は現在のアプローチが嫌いです。

4

1 に答える 1

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);
于 2012-12-22T23:03:24.670 に答える