实际上我使用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;
请帮我弄清楚问题...... 提前谢谢......
答案 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());