MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

как да внедрите функция като ляво присъединяване на mysql в mongoose

Това, което се опитвате да направите, не е възможно, защото няма оператор за присъединяване към mongodb.

Можете да постигнете това по два начина:

1 - От DBRefs: Промяна на вашата схема на такава, която включва цялата потребителска информация и не ги разделя на две различни схеми, както правите, вижте денормализирано . След това можете да използвате Популация функция за получаване на всички данни за лицата.

2 - Чрез ръчни препратки: Второто решение е да направите второ извикване към базата данни, като получите данните от personProfile, като използвате потребителския идентификатор като филтър.

Пример 1:

По този начин можете да получите всички данни за лица без второ извикване на базата данни.

var personSchema = Schema({
  _id     : Number,
  name    : String,
  birthday: Date,
  profilelink: String,
  email: String
});

var storySchema = Schema({
  _creator : { type : Schema.Types.ObjectId, ref: 'Person' },
  title    : String
});

Story
.find()
.populate(['_creator'])
.exec(function(err, stories) {
    //do your stuff here
}

Забележете, че използвам типа Schema.Types.ObjectId а неНомера . По този начин можете да присвоите нова стойност на _creator предаване на _id или обекта човек и mongoose ще преобразува обекта в неговия _id. Например, можете да публикувате нещо като

{
    _creator : {
        _id     : 123123123123,
        name    : 'Foo',
        birthday: '0000-00-00',
        profilelink: 'http://foo.bar',
        email: '[email protected]'
    },
    title    : 'Mr'
}

... и мангустата ще се преобразува в

{
    _creator : 123123123123,
    title    : 'Mr'
}

Пример 2:

По този начин вашите данни все още се нормализират и можете да получите всички данни за хората с второ обаждане.

Story
.find()
.exec(function(err, stories) {
    var arrayLength = stories.length;

    for (var i = 0; i < arrayLength; i++) {
        var story = stories[i];
        personProfile.findById(story._creator, function (err, person) {
            story._creator = person;
        }
    };
    // do your stuff here
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да архивирате и възстановите базата данни Mongodb

  2. Много актуализации на Mongodb

  3. Как да получите базата данни Mongo, посочена в низ за връзка в C#

  4. MongoDB PHP Uncaught MongoDB\Driver\Exception\ConnectionTimeoutException:Не са намерени подходящи сървъри

  5. Проста страница за вход в nodejs, използвайки експрес и паспорт с mongodb