2016-12-12 4 views
3

У меня есть две коллекцииMongoDB Регистрация на поле _ID от строки к ObjectId

  1. пользователя

      { 
          "_id" : ObjectId("584aac38686860d502929b8b"), 
          "name" : "John" 
         } 
    
  2. Роль

    { 
        "_id" : ObjectId("584aaca6686860d502929b8d"), 
        "role" : "Admin", 
        "userId" : "584aac38686860d502929b8b" 
    } 
    

Я хочу присоединиться к этим коллекции на основе на userId (in Роль collection) - _id (in пользователь сбор).

Я попытался ниже запрос:

db.role.aggregate(
{ 
    $lookup: 
    { 
     from: 'user', 
     localField: 'userId', 
     foreignField: '_id', 
     as: 'output' 
    } 
} 
); 

Это дает мне ожидаемых результатов до тех пор, как я хранить USERID как ObjectId. Когда мой userId является строкой, результатов нет. Ps: Я пытался

foreignField: '_id'.valueOf()

и

foreignField:' _id'.toString()

. Но не удастся совпадения/объединения на основе полей ObjectId-string.

Любая помощь будет оценена по достоинству.

ответ

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