MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

cara mengimplementasikan fungsi seperti gabung kiri mysql di luwak

Apa yang Anda coba lakukan tidak mungkin karena tidak ada pernyataan bergabung di mongodb.

Anda dapat mencapainya dengan dua cara:

1 - Oleh DBRefs: Mengubah Skema Anda menjadi skema yang menyertakan semua info pengguna dan tidak membaginya menjadi dua skema berbeda seperti yang Anda lakukan, lihat didenormalisasi . Kemudian Anda dapat menggunakan Populasi berfungsi untuk mendapatkan semua data orang.

2 - Dengan referensi Manual: Solusi kedua adalah membuat panggilan kedua ke database untuk mendapatkan data personProfile menggunakan userid sebagai filter.

Contoh 1:

Dengan cara ini Anda bisa mendapatkan semua data orang tanpa panggilan kedua ke database.

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
}

Perhatikan bahwa saya menggunakan jenis Schema.Types.ObjectId dan bukan Nomor . Dengan cara ini, Anda dapat menetapkan nilai baru ke _creator melewati _id atau objek orang dan luwak akan mengonversi objek ke _id-nya. Misalnya, Anda dapat memposting sesuatu seperti

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

... dan luwak akan berubah menjadi

{
    _creator : 123123123123,
    title    : 'Mr'
}

Contoh 2:

Dengan cara ini data Anda tetap normal dan Anda bisa mendapatkan semua data orang dengan panggilan kedua.

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. Boot Musim Semi + kueri Id MongoDB

  2. Temukan perbedaan antara 2 dokumen di mongoDB dari mongo shell

  3. Setara dengan mongo shell db.collection.runCommand() di Node.js

  4. Hashing kata sandi luwak

  5. Bagaimana menerapkan MongoDB bersarang $elemMatch Query di C#