Mongo Go Driver Count() 方法从 Azure CosmosDB 获取"Invalid response from server, value field is not a num



我正在使用MongoDB API与我的项目一起使用Azure Cosmos DB,并使用Golang和Mongodb Go驱动程序开发。当我尝试使用以下代码获得计数时,会给错误Invalid response from server, value field is not a number

itemCount, err := myCollection.CountDocuments(ctx, bson.D{{"$and", bson.A{bson.M{"userid": user.ID, "siteid": site.ID}}}})

相同的代码返回项目数(在这种情况下为532(,当我尝试使用mongoDB数据库时。然后,我决定通过编写一个简单的.NET应用程序来尝试相同的查询,该应用程序与MongoDB和CosmoSDB都效果很好。以下是我使用的代码,并且为两个数据库打印了532

var count = database.GetCollection<Model>("myCollection").CountDocuments(filter);
Console.WriteLine(count);

我还尝试通过ROBO3T查询两个数据库。查询db.getCollection('Consents').count({})从mongodb返回了532,而同一查询从COSMOSDB返回NumberLong(532)

我将这种行为写给了MSDN论坛,但没有人依靠。我什至不确定这是数据库API还是驱动程序的问题。如果驾驶员,它与MongoDB合作,这就是它答应我要做的。对于数据库API,它与.NET驱动程序一起使用,并告诉我Microsoft非常了解这种行为,并发现它可以接受并在其驱动程序中处理。任何人都知道如何克服这种情况?

您的过滤器应为:

itemCount, err := myCollection.CountDocuments(ctx, bson.M{"userid": user.ID, "siteid": site.ID})

bson.m将执行隐式$和

最新更新