Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB数组排序在CosmoDB中不工作_Mongodb_Azure Cosmosdb - Fatal编程技术网

MongoDB数组排序在CosmoDB中不工作

MongoDB数组排序在CosmoDB中不工作,mongodb,azure-cosmosdb,Mongodb,Azure Cosmosdb,更新 CosmoDB团队确认他们的系统存在问题,并且他们已经在进行修复 更多信息请参见此处的评论部分: 原始问题 我们计划迁移到CosmoDB,但发现$sort命令存在问题。 在当前运行此查询的MongoDB服务器中: db.getCollection('Product').find({ "ProductTypeId" : ObjectId("5913546b1ba88338e4347641"), "SubtypeIngredients" : "5949852c1ba88344d0facbf

更新

CosmoDB团队确认他们的系统存在问题,并且他们已经在进行修复

更多信息请参见此处的评论部分:

原始问题

我们计划迁移到CosmoDB,但发现$sort命令存在问题。 在当前运行此查询的MongoDB服务器中:

db.getCollection('Product').find({ 
"ProductTypeId" : ObjectId("5913546b1ba88338e4347641"), 
"SubtypeIngredients" : "5949852c1ba88344d0facbf5"
})
.skip(0).sort({ "IngredientRanks.2.Rank" : 1 }).limit(1)
我们得到了一些结果,但是当在CosmoDB中运行相同的查询时,我们没有得到任何结果

如果我从查询中删除sort命令,我将从CosmoDB获得结果

集合中的数据与本地数据库和CosmoDB中的数据相同

任何帮助都将不胜感激。 谢谢

更新:

下面是显示问题的实际查询的屏幕截图


没有具体保证CosmoDB支持MongoDB的所有操作符和功能,特别是API的非日常使用(如链接
排序
跳过
等)。这也扩展到了索引优化和选择。

这就是cosmosdb网站中提到的内容


我真的怀疑你的数据是否相同。尝试运行.count()并首先查看数字是否匹配。排序不会过滤您的数据,也不会过滤空的筛选文档…@dnickless我附上了一些带有查询和结果的屏幕截图。我倾向于大体上同意刚才添加的答案,我知道这不是“真正的答案”,但它确实解决了重要问题。CosmosDB不是MongoDB,只是“声称”是有线协议兼容的,因为为MongoDB编写的驱动程序应该能够连接和执行查询。但这并没有改变事实上这是“一件完全不同的事情”。因此,一般建议是1。如果您想使用CosmosDB,那么就使用它的“自己的”本机API,而不是兼容性声明。2.如果您希望编写到MongoDB API的代码“按设计”工作,那么请使用MongoDB。@NeilLunn我同意您的看法,我应该使用CosmoDB“自己的”API。但是,由于我们已经有了一个运行MongoDB的应用程序,CosmoDB声称您可以迁移数据、切换连接字符串并使用同一个驱动程序,我们想尝试一下,因为我们不想在azure中部署一个带有Mongo服务器的VM。我相信这里的总体观点“声明”与“实际情况”不同。不幸的是,inter-Operative裙子的“声明”相当误导地站在“完全相同”的一边。“苹果”不是“橘子”,不管有人说他们有一个味道完全一样的苹果。还是不是橘子。谢谢你的回复。当我在CosmoDM网站上提到这一点时:“MongoDB兼容性:您可以使用现有的MongoDB专业知识、应用程序代码和工具。您可以使用MongoDB开发应用程序,并使用完全管理的全球分布式Cosmos DB服务将其部署到生产环境中。”我并不是希望一切都像MongoDB那样工作,但由于我们没有使用任何“高级”功能,我们想尝试一下。。。遗憾的是,由于这种简单的类型,我们无法迁移到CosmoDB:(不要羞于给它+1来帮助他人;-)我从这里的MS那里得到了一个答案。他们说这是一个他们已经在解决的问题。@JorgeRamosEguinoa我在2019年1月来到这里,但它仍然不起作用。如果你们不介意我问的话,你们最后会做什么?我用
$orderBy
而不是
sort()
尝试了一个原始查询,但它也不起作用。如果数据库无法排序,为什么还要使用它呢?有点愚蠢。2020年4月,我正在努力按照Cosmos DB中的字符串字段对集合项进行排序:-/