C# 如何连接到Cosmos MongoDb

C# 如何连接到Cosmos MongoDb,c#,mongodb,asp.net-core,azure-cosmosdb,C#,Mongodb,Asp.net Core,Azure Cosmosdb,我创建了一个本地Cosmos实例,并基于 然而,当试图获取数据时,它似乎永远挂起 不清楚我的连接字符串应该包含什么,但我已经用以下内容填充了它: "ClientDataRepositoryConfiguration": { "CollectionName": "ClientData", "ConnectionString": "mongodb://localhost:C2y6yDjf5%2F

我创建了一个本地Cosmos实例,并基于

然而,当试图获取数据时,它似乎永远挂起

不清楚我的连接字符串应该包含什么,但我已经用以下内容填充了它:

"ClientDataRepositoryConfiguration": {
    "CollectionName": "ClientData",
    "ConnectionString": "mongodb://localhost:C2y6yDjf5%2FR%2Bob0N8A7Cgv30VRDJIWEHLM%2B4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw%2FJw%3D%3D@localhost:10255/admin?ssl=true",
    "DatabaseName": "ClientData"
 },
有人能告诉我是否正确输入了这个吗

这就是我的宇宙的样子:

我有一个名为ClientData的数据库,它有一个名为ClientData的容器


控制器端点

[HttpGet("Test")]
public async Task<IActionResult> TestGet()
{
    // I can hit breakpoint here, it hangs when waiting for `GetallAsync`
    var result = await _clientDataRepository.GetAllAsync();
    return Json(result); 
}
[HttpGet(“测试”)]
公共异步任务TestGet()
{
//我可以在这里点击断点,它在等待'GetallAsync'时挂起`
var result=await_clientDataRepository.GetAllAsync();
返回Json(结果);
}
存储库

internal sealed class ClientDataRepository : IClientDataRepository
{
    private readonly IMongoCollection<ClientData> _clientDatas;

    public ClientDataRepository(
        IClientDataRepositoryConfiguration configuration)
    {
        var client = new MongoClient(configuration.ConnectionString);
        var database = client.GetDatabase(configuration.DatabaseName);

        _clientDatas = database.GetCollection<ClientData>(configuration.CollectionName);
    }

    public async System.Threading.Tasks.Task<List<ClientData>> GetAllAsync(CancellationToken cancellationToken) 
        => await _clientDatas
            .Find(i => true)
            .ToListAsync(cancellationToken);
}
内部密封类ClientDataRepository:IClientDataRepository
{
私有只读IMongoCollection\u客户端数据;
公共客户端数据存储库(
IClientDataRepository配置)
{
var client=newmongoclient(configuration.ConnectionString);
var database=client.GetDatabase(configuration.DatabaseName);
_clientDatas=database.GetCollection(configuration.CollectionName);
}
公共异步System.Threading.Tasks.Task GetAllAsync(CancellationToken CancellationToken)
=>等待客户数据
.Find(i=>true)
.ToListSync(取消令牌);
}

Cosmos Emulator不支持data explorer,前面提到的SQL API除外。您可能已经使用SQLAPI创建了集合

您可以使用Azure Cosmos emulator和SQL开发应用程序, Cassandra、MongoDB、Gremlin和TableAPI帐户。目前 emulator中的data explorer完全支持仅查看SQL数据; 使用MongoDB、Gremlin/Graph和Cassandra客户端创建的数据 应用程序此时不可查看

可以使用代码(而不是数据资源管理器)创建集合和数据库,也可以从中使用
mongod
命令

如果改用
mongod
工具,则连接字符串应类似于
mongodb://localhost:
如中所述。
mongod
工具的默认端口27017

"ClientDataRepositoryConfiguration": {
    "CollectionName": "ClientData",
    "ConnectionString": "mongodb://localhost:27017",
    "DatabaseName": "ClientData"
 },

另一个选项是使用。

错误是什么?@Sajeetharan它在尝试从mongodid获取数据时会超时。您是否尝试调试并查看客户端是否已创建?你也可以发布代码吗?@Sajeetharan是的,客户端肯定是创建的,它会尝试获取数据。将在一个sec@Sajeetharan我为我的控制器添加了代码,所以你是说我无法从cosmos emulator data explorer创建mongo数据库?很好,它令人困惑,因为当在
sqlapi
下查看数据时,它显示为json对象。SQL API还显示json,因为数据存储不是SQL文档。SQLAPI并不意味着SQL表:),它更多的是类似SQL的语法,可以用来查询文档。