MongoDB.Driver.MongoCommandException:'命令聚合失败:' $ group'不受支持。'

时间:2017-07-14 20:14:55

标签: mongodb azure-cosmosdb

实际上我使用cosmos db作为我的后端我尝试使用Linq查询样式来计算集合。但是我收到了这个错误

  

MongoDB.Driver.MongoCommandException:'命令聚合失败:   ' $组'不受支持。'

using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

var client = new MongoClient(url);
var database = client.GetDatabase("db");
var collection = database.GetCollection<Users>("users");
var query = collection.AsQueryable<Users>().Count();

我在查询行中得到了execption handler错误...

  

MongoDB.Driver.MongoCommandException:&#39;命令聚合失败:   &#39; $组&#39;不受支持。&#39;

请帮我弄清楚问题...... 提前谢谢......

1 个答案:

答案 0 :(得分:0)

  

var collection = database.GetCollection(&#34; users&#34;); var result = collection.Find(_ =&gt; true).ToList(); var query = result.Count();这给了我所需要的确切结果......这是一种获取结果的方法,或者我做错了什么

在计算用户数之前,您不需要调用ToList()。以下代码没问题。

var query = collection.Find(_ => true).Count(); 

您还可以使用SQL查询来获取聚合数据。以下代码供您参考。

SELECT value count(1) FROM c

要调用此SQL查询,我们可以使用DocumentDb C#SDK。我在我的MongoDb服务上测试过,在我身边工作得很好。

var client = new DocumentClient(new Uri("https://mymongodb.documents.azure.com"), "password");
SqlQuerySpec query = new SqlQuerySpec("SELECT value count(1) FROM c");
var collectionLink = UriFactory.CreateDocumentCollectionUri("db", "users");
var documentQuery = client.CreateDocumentQuery(collectionLink, query);
var count = Convert.ToInt32(documentQuery.ToList().First());