C# 如何连接到Cosmos MongoDb
我创建了一个本地Cosmos实例,并基于 然而,当试图获取数据时,它似乎永远挂起 不清楚我的连接字符串应该包含什么,但我已经用以下内容填充了它: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
"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的语法,可以用来查询文档。