2012-12-22 3 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-драйвер, для получения всего списка проектов, у которого есть только данные!

Текущий подход, который я использую, - это получить всех администраторов. Затем напишите код 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"); BasicDBObject myQuery = новый BasicDBObject ("projectList", новый BasicDBObject ("$ exists", true)). Append ("projectList", 1); Результат объекта = db.find (myQuery); – Echo

+0

Однако он возвращает только одного администратора! – Echo

+0

Возвращает курсор. Один за раз. – WiredPrairie

Смежные вопросы