У меня есть имя объекта, я хочу, чтобы оно было таким:
// such data comes from the front: namefield ("кот") and ID ("5e7f164771c90130441c0102")
"firstname":{
"кот":["5e7f164771c90130441c0102"],
"tata": ["24tafwef42f42f4242f24f","fwf4f43qf24qf4q2f42"]
}
Мне нужно вставить поле в объект и назначить массив с идентификатором.
Если такое поле уже есть, вставьте ID в массив.
Если такой ID уже есть, то в массиве делать нечего.
Если в массивах есть идентификатор, удалите его из массива и вставьте в другой массив, где поле имени спереди, чтобы вставить его.
немного поработал, думаю, стоит использовать bulkWrite или findOneAndUpdate, но не могу понять, как сделать необходимые действия:
router.post('/bio/firstname', (req, res) => {
Habalka.find({
_id: 'd9aa8566-75fe-4108-a72e-1b67e79cf40c'
})
.then(habalka => {
console.log(habalka[0].bio.firstname) // { 'кот': [ 5e7f164771c90130441c0102 ] }
});
});
модель
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const HabalkaSchema = new Schema({
_id: {
type: String
},
bio: {
firstname: {},
lastname: {},
middlename: {},
company: {}
},
rating: [
],
files: [
{
_id: {
type: String
},
destination: {
type: String
},
filename: {
type: String
},
path: {
type: String
},
folder: {
type: String
},
info: {
size: {
type: Number
},
mimetype: {
type: String
},
encoding: {
type: String
},
originalname: {
type: String
},
fieldname: {
type: String
},
},
date: {
type: Date,
default: Date.now
},
bio: {
type: Object
},
userId: String,
guessId: {},
}
],
date: {
type: Date,
default: Date.now
}
});
module.exports = Habalka = mongoose.model('habalka', HabalkaSchema);