一尘不染

如何使用2d地理索引在Mongoose模式中正确定义数组中的对象

node.js

我目前在为下面的文档创建架构时遇到问题。服务器的响应始终将“
trk”字段值返回为[Object]。不知为何我不知道这应该如何工作,因为我至少尝试了所有对我有意义的方法;-)

如果有帮助,我的Mongoose版本是3.6.20和MongoDB 2.4.7,在我忘记之前,最好将它设置为Index(2d)

原始数据:

{
    "_id": ObjectId("51ec4ac3eb7f7c701b000000"),
    "gpx": {
        "metadata": {
            "desc": "Nürburgring VLN-Variante",
            "country": "de",
            "isActive": true
        },
    "trk": [
    {
        "lat": 50.3299594,
        "lng": 6.9393006
    },
    {
        "lat": 50.3295046,
        "lng": 6.9390688
    },
    {
        "lat": 50.3293714,
        "lng": 6.9389939
    },
    {
        "lat": 50.3293284,
        "lng": 6.9389634
    }]
    }
}

猫鼬架构:

var TrackSchema = Schema({
            _id: Schema.ObjectId,
            gpx: {
                metadata: {
                    desc: String,
                    country: String,
                    isActive: Boolean
                },
                trk: [{lat:Number, lng:Number}]
            }
        }, { collection: "tracks" });

Chrome的“网络”标签中的响应始终如下所示(这只是trk-part错了):

{ trk: 
      [ [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],

我已经尝试过为“ trk”使用不同的架构定义:

  1. trk:Schema.Types.Mixed
  2. trk:[Schema.Types.Mixed]
  3. trk:[{类型:[数字],索引:“ 2d”}]

希望你能帮我 ;-)


阅读 309

收藏
2020-07-07

共1个答案

一尘不染

您可以通过以下方式声明trk:-

trk : [{
    lat : String,
    lng : String
     }]

要么

trk : { type : Array , "default" : [] }

在第二种情况下,在插入过程中,将对象像下面那样推入数组

db.update({'Searching criteria goes here'},
{
 $push : {
    trk :  {
             "lat": 50.3293714,
             "lng": 6.9389939
           } //inserted data is the object to be inserted 
  }
});

或者您可以通过设置对象数组

db.update ({'seraching criteria goes here ' },
{
 $set : {
          trk : [ {
                     "lat": 50.3293714,
                     "lng": 6.9389939
                  },
                  {
                     "lat": 50.3293284,
                     "lng": 6.9389634
                  }
               ]//'inserted Array containing the list of object'
      }
});
2020-07-07