Azure mongo 服务语法不正确,接近"10"堆栈



我使用azure mongo服务作为数据库

连接是使用门户中提供的连接字符串建立的,基本的写入操作运行良好,但当尝试执行登录时,我会收到以下错误。

documents.azure.com:10250:语法错误,"10"附近的语法不正确

我们使用php版本5.6和Mongo客户端库进行Mongo操作

该应用程序目前正在mongo服务器设置中成功运行,实例本身我们正在尝试将数据库迁移到azure服务。为什么会出现这种错误?

Mongo请求导致错误

db.name_collection.findOne({"UniqueName":"charush"},{"_id":0,"uniqueId":1})

Azure mongo服务作为数据库当前正在预览中。我在其他请求中也遇到过类似的情况,Azure支持人员告诉我,目前还不支持所有请求。这就是为什么您可以拥有一些与"纯"mongoDB实例完美配合的请求。

以我为例,我发现$elemMatch不起作用。

db.users_collections.find({
"_id": "1"
},
{
"devices": {
"$elemMatch": {
"device_id": "device_id"
}
}
})

支持回答了我以下回应:

不幸的是,我们现在没有办法从数组中投影特定的元素。我们也在努力在项目阶段支持$elemMatch,它应该在3月中旬上市。

你必须明白,Azure上的mongo as服务是一种包装器,允许使用mongoDB协议与他们的NoSQL技术进行交互:DocumentDB,此外,正如我在回答的开头所说,该功能仍在预览中。这也是为什么你不能在Azure Mongo服务上使用Mongo Compass的原因:

由于DocumentDB是一个完全托管的服务,我们不支持通过MongoDB api进行机器管理/管理操作(如addShard/query perfCounters/query Memory&Connections)。根据我们的调查,MongoCompass的正常流程依赖于这些命令,如果这些命令中的任何一个失败(即使正常的crud api成功),它也不会工作。我建议使用RoboMongo,这是一个开源工具,可以与mongoapis交互

因此,如果你想保持使用mongoDB api的完全托管服务的优势,你必须等到生产版本(根据支持,3月中旬),或者找到其他方法来执行这个查询。

最新更新