2015-07-04 2 views
0

Я создал одну схему в mongodb своей очень вложенной схеме. Похоже, что этотВложенная подсхема в mongoose

{ 
    "_id": ObjectID("559690ec34c506cea4be1775"), 
    "cities": [ 
     { 
      "val": "something", 
      "pincode": [ 
       { 
        "val": "something", 
        "people": [ 
         { 
          "val": "something", 
          "frnds": [ 
           { 
            "val": "something1", 
            "frndaddress": [ 
             { 
              "val": "something2" 
             } 
            ] 
           } 
          ] 
         } 
        ] 
       } 
      ] 
     } 
    ] 
} 

Этот документ вставлен должным образом в MongoDB, но я не имею ни малейшего представления о том, как я могу преобразовать это на мангуста я попробовать это с мангуста, но его, кажется, ее не работает

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

// create a all city list, without id 
var allCitySchema = new Schema({ 
    cities: [{ 
     val:{ type: String }, 
     pincode:[{ 
       val:{ type: String }, 
       people:[{ 
         val:{ type: String }, 
         frnds:[{ 
           val:{ type: String }, 
           frndaddress:[{ 
           val:{ type: String },  
           }] 
         }] 
       }] 
     }] 
    }] 
}, {collection: 'allcities'}); 

var allcities = mongoose.model('allcities', allCitySchema); 
module.exports = allcities; 

Я новичок на узле и mongodb, который я создал над схемой, я даже не знаю, ее правильно или нет.

+0

'его кажется его нерабочим' вы можете это уточнить? –

+0

Когда я пытаюсь вставить данные, его проверка достоверности –

ответ

1

Я бы предположил, что вы должны попытаться сгладить структуру данных. Это действительно зависит от того, как все эти поля связаны, однако хорошее практическое правило из моего опыта заключается в том, что связывание объектов в вашем mongoDB через ссылочный массив - отличный способ сохранить связь, но все же позволяет получить высокую степень развязанной информации. Вот один пример того, как вы могли бы установить свои схемы для вышесказанного, но при этом сохранить нужные вам отношения. Первая схема для каждого города:

// A Schema for city information 
var mongoose = require('mongoose'); 
var People = require('./people.js'); 

var City = new mongoose.Schema({ 
//Pincode for this city object 
pincode: { type: String }, 
// An array of references to the people objects for those who live in this city 
people: [{ type: mongoose.Schema.Types.ObjectId, ref: 'People' }] 
}); 

module.exports = mongoose.model('City', City); 

Затем в отдельном файле, схема для людей:

// A Schema for person information 
var mongoose = require('mongoose'); 
var Friends = require('./people.js'); 

var Person = new mongoose.Schema({ 
    //The address of this Person object 
    address: { type: String }, 
    // An array of references to the other people objects who are friends of this person 
    friends: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Friends' }] 
    }); 

    module.exports = mongoose.model('People', People); 

Обратите внимание, что друзья также люди объекты. Такое структурирование данных имеет ряд преимуществ. 1) Все поля имеют только одно место в базе данных и поэтому используют наименьшее количество дискового пространства, поскольку существует очень мало (только ссылочные идентификаторы) избыточности. 2) Извлечение информации из нескольких схем через запрос БД довольно легко с помощью мангуста через mongoose population и deep population.

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