Node.js mongoose:无法使尚未添加到数组的子文档无效

Node.js mongoose:无法使尚未添加到数组的子文档无效,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,当我尝试向公司模型中添加位置时,我得到了这样一个结果:无法使尚未添加到数组中的子文档无效。 我的模式如下所示: var companySchema = new Schema({ name: String, description: String, locations: [{ address: String, loc: { type: [Number], index: '2d'

当我尝试向公司模型中添加位置时,我得到了这样一个结果:无法使尚未添加到数组中的子文档无效。

我的模式如下所示:

var companySchema = new Schema({
    name: String,
    description: String,
    locations: [{
        address: String,
        loc: {
            type: [Number],
            index: '2d'
        }
    }],
});
执行添加位置的更新

// I am very unsure if I can creata a location this way
var newLocation = 
{
    address: address,
    loc:
    {
        type: [long, lat]
    }
};

CompanyModel.findByIdAndUpdate(
    company_id, 
    { $push: { locations: newLocation } }, 
    {new: true},
    function(err, updatedCompany) {
        if(err) throw err;

        if(!updatedCompany)
        {
            res.sendError({
                error: 'INVALID_COMPANY_ID'
            });
        }
        else
        {
            res.sendSuccess({
                data:
                {
                    company: updatedCompany
                }
            });
        }
});

你知道我为什么会收到这个错误吗?我没有收到堆栈跟踪。

作为您实际问题的侧栏,我建议您不要在此处将地理位置数据存储在子文档数组中。问题在于,尽管MongoDB可以在数组中“查找”最近的包含地理空间数据的文档,但它不能“排除”数组中“不靠近”查询位置的项(或就这一点而言,
$geointen
)。例如,阵列同时存储“纽约”和“东京”位置数据。有人问“新泽西”,这里离“纽约”很近,但离“东京”不远。但完整的文档被重新发布。没办法,我来回答你的问题。你的var是错误的。应该是
{address:address,loc:[long,lat]}$push
的对象。这是你的错误。也不是一个真正的参考帮助点,因此也不是一个答案。Doodlemeat,你能在下面添加一个总结Blakes Seven解决方案的答案吗?我不知道这对未来的读者是否有帮助?作为您实际问题的侧边栏,我建议您不要在这里将地理位置数据存储在子文档数组中。问题在于,尽管MongoDB可以在数组中“查找”最近的包含地理空间数据的文档,但它不能“排除”数组中“不靠近”查询位置的项(或就这一点而言,
$geointen
)。例如,阵列同时存储“纽约”和“东京”位置数据。有人问“新泽西”,这里离“纽约”很近,但离“东京”不远。但完整的文档被重新发布。没办法,我来回答你的问题。你的var是错误的。应该是
{address:address,loc:[long,lat]}$push
的对象。这是你的错误。也不是一个真正的参考帮助点,因此也不是一个答案。Doodlemeat,你能在下面添加一个总结Blakes Seven解决方案的答案吗?我不知道这对未来的读者是否有帮助?