Какой тип поля мы можем использовать в монго для хранения массива объектов? - PullRequest
0 голосов
/ 02 октября 2019

Какой тип поля мы можем использовать в монго для хранения массива объектов? Я хотел сохранить данные ниже. У меня есть моя реализация ниже, и я добавил код, может быть, вы можете как-то проверить это и сообщить мне, где находится часть, где я получил проблему или ошибку. Я также предоставил образец данных. Проблема с текущей реализацией состоит в том, что она не сохраняет данные, массив данных которых в базе данных равен 0 элементам

Пример данных

{
    "books":
              [
                {
                    "title": "Professional JavaScript",
                    "authors": [
                        "Nicholas C. Zakas"
                    ],
                    "edition": 3,
                    "year": 2011
                },
                {
                    "title": "Professional JavaScript",
                    "authors": [
                        "Nicholas C.Zakas"
                    ],
                    "edition": 2,
                    "year": 2009
                }

              ]
}

#implementation


const schema = new Schema({
    books: [{ type: mongoose.Schema.Types.Mixed }]

  })


var RouterData = mongoose.model('RouterData', schema);

var routerData = {
    "books":
              [
                {
                    "title": "Professional JavaScript",
                    "authors": [
                        "Nicholas C. Zakas"
                    ],
                    "edition": 3,
                    "year": 2011
                },
                {
                    "title": "Professional JavaScript",
                    "authors": [
                        "Nicholas C.Zakas"
                    ],
                    "edition": 2,
                    "year": 2009
                }

              ]
}

var data = new RouterData({routerData: routerData});
data.save();

Ответы [ 4 ]

1 голос
/ 02 октября 2019

Это должно работать:

const mongoose = require('mongoose');

const BookSchema = new mongoose.Schema({
  title: { type: String },
  authors: [String],
  edition: { type: Number },
  year: { type: Number },
});

const MySchema = new mongoose.Schema({
  books: [BookSchema],
});

module.exports = mongoose.model('MySchema', MySchema);
1 голос
/ 02 октября 2019

Определите вашу схему в мангусте следующим образом:

const BookSchema = new mongoose.Schema({
    title: String,
    authors: [String],
    edition: Number,
    year: Number,
}, {
    _id: false,
});

const MySchema = new mongoose.Schema({
    books: [BookSchema],
});
1 голос
/ 02 октября 2019

Если вы используете mongoose, вы должны сделать в своей схеме

books: [{ type: mongoose.Schema.Types.Mixed }]

mixed означает, что он может принимать любой объект, массив и т. Д., Вы можете проверить https://mongoosejs.com/docs/schematypes.html#mixed

1 голос
/ 02 октября 2019

Я думаю, что вы можете определить схему следующим образом.

const booksSchema = new Schema({
  books: [{
    title: String,
    authors: [String],
    edition: Number,
    year: { type: Date }
  }]
})
...