Мангуст: поле BSON возвращает пустое в схеме модели

#node.js #mongodb #mongoose

#node.js #mongodb #мангуст

Вопрос:

У меня есть следующие документы на MongoDB:

 {
    "_id": {
        "$oid": "5fddb4f404df1a32044f1f82"
    },
    "name": "1pc Chicken McDo with Spaghetti Meal",
    "description": "1pc Chicken McDo with Spaghetti Meal",
    " price ": 144,
    "image": "1pc-chicken-mcdo-with-spaghetti-meal.png",
    "locations": {
        "$regex": "["Angeles, Pampanga", "Baguio City", "Cabanatuan, Nueva Ecija", "Mabalacat, Pampanga", "Makati", "Mandaluyong", Pasay", Pasig", San Fernando, Pampanga", San Jose, Nueva Ecija", San Juan", Taguig"]",
        "$options": ""
    }
}
 

Следуя этой структуре, я создал этот код схемы на NodeJS. Обратите внимание, что последнее поле location , которое является, объявлено как массив типа плоской строки.

 var productSchema = new Schema({
  name: String,
  description: String,
  price: Decimal128,
  image: String,
  location: [{type: String}]
});
 

Моя проблема в том, что все остальное работает, когда я пытаюсь получить данные, используя find() , за исключением этого location поля. Вот пример того, что возвращает модель y:

 [
  {
    "location": [
      
    ],
    "_id": "5fddb4f404df1a32044f1f82",
    "name": "1pc Chicken McDo with Spaghetti Meal",
    "description": "1pc Chicken McDo with Spaghetti Meal",
    " price ": 144,
    "image": "1pc-chicken-mcdo-with-spaghetti-meal.png",
    "locations": {
      
    }
  },
]
 

Как вы можете видеть, поле location остается пустым, несмотря на то, что все остальное возвращается нормально.

Может кто-нибудь помочь мне разобраться в этом?

Спасибо.

Ответ №1:

Оказалась проблема с экранированием кавычек и запятых при импорте из Excel в Compass. Желательно выполнить дополнительное ручное вмешательство в преобразованные данные перед выполнением фактического импорта. Если вы можете, используйте JSON вместо CSV, как я это делал:

 {
    "locations": [
      "Angeles,Pampanga",
      "Baguio City",
      "Cabanatuan,Nueva Ecija",
      "Mabalacat,Pampanga",
      "Makati",
      "Mandaluyong",
      "Pasay",
      "Pasig",
      "San Fernando,Pampanga",
      "San Jose,Nueva Ecija",
      "San Juan",
      "Taguig"
    ],
    "_id": "5fde0dd704df1a32044f1fde",
    "name": "1pc Chicken McDo with Spaghetti Meal",
    "description": "1pc Chicken McDo with Spaghetti Meal",
    "price": {
      "$numberDecimal": "144"
    },
    "image": "1pc-chicken-mcdo-with-spaghetti-meal.png"
},