2014-10-02 111 views
0

假设下面的架构数据添加到阵列中,我想节省一些GeoJSON的数据与猫鼬如何猫鼬模式

var simpleSchema = new Schema({ 
    properties:{ 
     name:String, 
     surname:String 
    }, 
    location : { 
     type : String, 
     coordinates : [ Number , Number ] 
    } 
}); 

这是我尝试保存文档

var a = new simple({properties:{name:"a", surname:"b"}, location:{type:"Point", coordinates:[1, 0]}}).save(function(err){...}); 

但是,我在数据库中得到的是

ObjectId("542da9ab0882b41855ac3be0"), "properties" : { "name" : "a", "surname" : "b" }, "__v" : 0 } 

它看起来像整个位置标记和数据丢失。这是定义模式还是保存文档的错误方式?

回答

2

在嵌入式对象中使用名为type的字段时,需要使用对象来定义其类型,或者Mongoose认为您正在定义对象本身的类型。

因此改变你的架构定义:

var simpleSchema = new Schema({ 
    properties:{ 
     name:String, 
     surname:String 
    }, 
    location : { 
     type : { type: String }, 
     coordinates : [ Number , Number ] 
    } 
}); 
+0

所以,这是一个猫鼬“的问题”,而不是一个MongoDB的? – Dimitris 2014-10-03 16:47:27

+1

@Dimitris对,这是一种猫鼬怪癖。 – JohnnyHK 2014-10-03 17:14:07