新的PHP驱动程序1.2.3与laravel 4.2上的MongoDB 3.4不兼容
我们正在我们的web应用程序中使用以下软件,如新的PHP驱动程序1.2.3与laravel 4.2上的MongoDB 3.4不兼容,php,mongodb,laravel,laravel-4,Php,Mongodb,Laravel,Laravel 4,我们正在我们的web应用程序中使用以下软件,如 Laravel4.2(PHP框架) MongoDB(3.4) PHP版本5.6(Ubuntu 14 LTS) 因此,在将MongoDB版本从2.6更新到3.4之后,一些API关闭了。(坐标搜索) 所以我们发现需要从mongodb站点升级php驱动程序! (参考链接:) -在以下文件中进行必要的更改 -php.ini(/etc/php5/cli/php.ini) -phpini(/etc/php5/apache2/php.ini) -mongo.in
请将您的mongo类添加到
app.php
。就像在我的文件中,我添加了这样的内容
'Jenssegers\Mongodb\MongodbServiceProvider',
上面是我的应用程序类。您必须添加库类
第二个原因是,您是否在代码中使用db而不是db?在任何地方
如果您遵循了上述步骤,请在cmd中运行以下命令:
composer update, then composer dump-autoload
如果你需要帮助,一定要告诉我。我在Laravel 4.2中也有同样的错误,我通过以下步骤解决了。1]使用以下MongoQuery创建索引
db.user.createIndex( { "location" : "2dsphere" } )
2]确保索引已应用或未使用以下命令
db.user.ensureIndex( { "location" : "2dsphere" } )
3]在MongoDB控制台中检查以下Mongo查询。它正在工作
db.user.find(
{"location" : {
"$nearSphere": {
"$geometry": {
"type": "Point", "coordinates": [72.513723 , 23.041388]
},
"$maxDistance": 8000,
"$uniqueDocs": 1
}
}
})
经过两天的投资,我通过谷歌搜索和在MongoDB上执行不同的rnd步骤,得到了这个解决方案,解决了这个bug谢谢您的回答,但在Mongo上出现rnd查询错误之后。我发现在新版本MongoDB 3.4中,在调用地理坐标搜索API之前需要对集合进行索引。所以createIndex是这个查询的最终解决方案