mongoose 怎么插入嵌套数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongoose 怎么插入嵌套数组相关的知识,希望对你有一定的参考价值。

1、Mongoose的schema的ref,主要用于方便查询中多个collection之间的关联:populate;
2、插入数据的时候,需要自己处理插入的逻辑,分别插入不同的collection,并保持不同的collection中的ref的ObjectId的一致
参考技术A 问题描述不清楚,为让您更好地得到答案,您可以通过文字、截图,对问题进行更详细的描述并悬赏,然后把你疑惑的问题提交,就可以啦.如果您对我的回答有不满意的地方,请您继续追问 答题不易,互相理解.

嵌套数组 JSON 的 Mongoose 模型

【中文标题】嵌套数组 JSON 的 Mongoose 模型【英文标题】:Mongoose Model for Nested Array JSON 【发布时间】:2017-09-26 08:52:25 【问题描述】:

我需要为下面的嵌套 JSON 数组创建一个 Mongoose 模型。我面临的问题是 TLSM01 是一个动态密钥,我无法在模型中指定它。如果我单独提及实体并将所有 json 对象作为字符串传递,它将存储为 [object] 而不是数据。

 "entities": [
        
          "TLSM01": [
            
              "01": 
                "Name": "Light",
                "Properties": [
                  
                    "state": [
                      
                        "type": "boolean",
                        "propertyMode": "actuator"
                      
                    ],
                    "brightness": [
                      
                        "type": "integer",
                        "propertyMode": "actuator"
                      
                    ]
                  
                ]
              
            
          ]
        

猫鼬模型:

var thingsSchema = (
    "uuid": String,
    "things": String,
    "manufacturerName": String,
    "manufacturerId": String,
    "osName": String,
    "hardwareVersion": String,
    "firmwareVersion": String,
    "entity": [String]
)

【问题讨论】:

看看***.com/questions/28166463/…和***.com/questions/18317284/mongoose-extending-schemas 【参考方案1】:

将数据存储在键值对中

"entities": [
  
    keyName:'TLSM01',
    data: [
      
        "01": 
          "Name": "Light",
          "Properties": [
            
              "state": [
                
                  "type": "boolean",
                  "propertyMode": "actuator"
                
              ],
              "brightness": [
                
                  "type": "integer",
                  "propertyMode": "actuator"
                
              ]
            
          ]
        
      
    ]
  
]

猫鼬模型:

var thingsSchema = (
    "uuid": String,
    "things": String,
    "manufacturerName": String,
    "manufacturerId": String,
    "osName": String,
    "hardwareVersion": String,
    "firmwareVersion": String,
    "entity": [_id:false,keyName:type:String,data:[]]
)

【讨论】:

【参考方案2】:

1.我认为你需要这样的结构: 2.查看光值如何是一个数组...在对象内 - 必须在 Mongo 中使用键值配对并确保您的模型 Json 对象可以映射到您的 mongoose 数据库 - 因此您使用您的数据模型来输入数据 - 所以这个如果你增加它应该可以工作..

const blogSchema = new Schema(
  
name:
    type:String,
    require: true
  ,
heat:
    type:Number,
    Require:true
  ,
moisture:
    type:Number,
    Require:true
  ,
light:
    green:type:Number, Require:true,
    red:type:Number, Require:true,
    blue:type:Number, Require:true,
    white:type:Number, Require:true
  ,
body:
    type:String,
    require: true
  
,timeStamps:true);

【讨论】:

以上是关于mongoose 怎么插入嵌套数组的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose:填充嵌套的 id 数组

将对象 ID 推送到嵌套数组 MongoDB/Mongoose

嵌套数组 JSON 的 Mongoose 模型

Mongoose 在多个数组中填充嵌套元素

使用 javascript 数组方法更新 mongoose 中的嵌套数组

如何使用 'type' 在 mongoose 中使用嵌套模式来创建数组?