Карта уменьшает подходящий метод для объединения частей нескольких коллекций, которые ссылаются друг на друга? - PullRequest
0 голосов
/ 01 декабря 2011

Читал о карте / уменьшении здесь и на других сайтах, и я до сих пор не уверен, является ли это правильным или неправильным способом решения этой проблемы.

У меня есть три модели:

User --  embeds many SearchRequests
SearchRequest -- references 1 Item
Item

Что мне нужно сделать, так это получить немного информации от каждой модели, а затем устранить любые результаты, которые не соответствуют критериям. Это карта / уменьшить?

Карта, которую я хочу:

user.email, user.name, item.name, item.amount, 
 item.url, searchRequest.amountCutoff

Тогда я думаю, что уменьшу и уничтожу все записи, где:

item.amount > searchRequest.amountCutoff

У меня проблемы с тем, как получить item.name, item.amount на карте. Это то, что у меня есть (карта будет называться в коллекции Users):

map = "function() {  if (this.search_requests)
  for (var ar in this.search_requests) {

// this part needs help  ---vvvv
    var theItem= items.where(_id: this.search_requests[ar].item_id) 

    emit ( { },
     { this.email, 
       this.name, 
       this.search_requests[ar].item_id,
       this.search_requests[ar].amountCutoff, 
       theItem.name,
       theItem.amount
      }
    }
} "

^^ Синтаксис этого может быть неправильным. Я еще учусь. Похоже, мне нужен моно-эквивалент переменной диапазона LINQs там ... не уверен, если это возможно.

Итак, мой вопрос: возможно ли (или разумно) получить доступ к другой коллекции, которая не является коллекцией "отображения" в функции карты?

1 Ответ

0 голосов
/ 02 декабря 2011

AFAIK, к сожалению, на данный момент карта / уменьшение не поддерживает более одной коллекции на данный момент.

Поскольку вы знаете критерий item.count> n, создайте для него индекс и запросите документы,который должен содержать ссылку на пользователя, скажем, userid.

, что можно сделать, запустив javascript в mongoshell или вы можете написать код в своей среде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...