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

我目前在为以下文档创建架构时遇到问题。来自服务器的响应总是将“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
    }]
    }
}

Mongoose 架构:

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

Chrome 中 Network 选项卡的响应总是如下所示(这只是 trk 部分错误):

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

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

  1. trk: Schema.Types.Mixed
  2. trk: [Schema.Types.Mixed]
  3. trk:[ { type:[Number], index: "2d"}]

希望你能帮助我;-)

最佳答案

您可以通过以下方式声明 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'
      }
});

https://stackoverflow.com/questions/19695058/

相关文章:

node.js - 为什么 Mongoose 总是在我的收藏名称末尾添加一个s

node.js - MongoDB 和 Mongoose 的区别

mongodb - 蒙哥 : find items that don't have a certai

mongodb - 如何在不定义模式的情况下使用 Mongoose?

node.js - 如何使用 Mongoose 生成 ObjectId?

mongodb - mongodb在运行吗?

mongodb - 为什么索引的方向在 MongoDB 中很重要?

node.js - MongoDB atomic "findOrCreate": findOne,

json - 将 Mongo 集合转储为 JSON 格式

mongodb - 使用 MongoDB 检查字段是否存在