Как найти в Монго, используя ссылки на идентификатор объекта с помощью nodejs? - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть две схемы

var UserSchema  =new mongoose.Schema({
    username:String,
    password:String,
    user_email:String,
    user_contacts:[
        {
            type:mongoose.Schema.Types.ObjectId,
            ref:"User"
        }
    ]
})
module.exports=mongoose.model("User",UserSchema);

и

var friendRequestSchema=new mongoose.Schema({
    requester:{
        type:mongoose.Schema.Types.ObjectId,
        ref:"User"
    },
    recipient:{
        type:mongoose.Schema.Types.ObjectId,
        ref:"User"
    },
    //1 for requested , 2 for accepted , 3 for rejected
    status:Number
});
module.exports=mongoose.model("FriendRequest",friendRequestSchema);

, и я хочу найти все запросы на добавление в друзья с определенным идентификатором пользователя для поля requestter , затем яхотите получить всех получателей пользователей этих запросов и, наконец, добавить их в словарь, где ключом является получатель , а значением является friendRequest , связанный стак что я могу передать его в файл ejs, как это:

res.render("myrequests",{myDictionary:myDictionary});

1 Ответ

0 голосов
/ 20 февраля 2019

Теперь вы можете сделать это в Mongo 3.2, используя $ lookup

$ lookup принимает четыре аргумента

from: Указывает коллекцию в той же базе данных для выполнения объединенияс.Коллекция from не может быть очищена.

localField: Определяет поле из документов, введенных на этапе $ lookup.$ lookup выполняет сопоставление равенства localField и foreignField из документов коллекции from.

foreignField: указывает поле из документов в коллекции from.

as: указывает имянового поля массива для добавления во входные документы.Новое поле массива содержит соответствующие документы из коллекции from.

db.Foo.aggregate(
  {$unwind: "$bars"},
  {$lookup: {
    from:"bar",
    localField: "bars",
    foreignField: "_id",
    as: "bar"

   }},
   {$match: {
    "bar.testprop": true
   }}
)

Надеюсь, это решит вашу проблему !!!

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