mongodb - 从 ASP.NET Core 以字符串形式返回 ObjectID

标签 mongodb asp.net-core objectid

如何获取通过 ASP.NET Core 返回的 ObjectId 的字符串表示形式。

我的 Controller 中的操作结果如下:

return new ObjectResult(new { session, user });

用户属性之一是 UserId,它属于 ObjectId 类型。

但是,这会在响应中返回为

"id": {
  "timestamp": 1482840000,
  "machine": 6645569,
  "pid": 19448,
  "increment": 5052063,
  "creationTime": "2016-12-27T12:00:00Z"
}

我希望响应只是58625d5201c4f202609fc5f3,它是相同结构的字符串表示形式。

是否有任何简单的方法可以对所有返回的 ObjectIds 执行此操作?

编辑 添加更多数据

这是用户类别。 ObjectIdMongoDB.Bson.ObjectId

public class User
{
    public ObjectId Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public string PasswordHash { get; set; }
    public string PasswordSalt { get; set; }
}

我的 Controller 中的 get 方法。 Controller Microsoft.AspNetCore.Mvc.Controller

[HttpGet("{id}", Name = "GetUser")]
public async Task<IActionResult> Get(ObjectId id)
{
    var user = await _repository.GetOne<User>(id);
    if (user == null) return NotFound();
    return new ObjectResult(user);
}

这是我的存储库中的方法:

public async Task<T> GetOne<T>(ObjectId id)
{
    var collectionname = typeof(T).Name;
    var collection = _database.GetCollection<T>(collectionname);
    var filter = Builders<T>.Filter.Eq("_id", id);
    var result = await collection.Find(filter).ToListAsync();
    return result.FirstOrDefault();
}

最佳答案

您必须显式地将 ObjectID 写入 JSON 转换器。请检查以下链接: https://stackoverflow.com/a/37966098/887976

关于mongodb - 从 ASP.NET Core 以字符串形式返回 ObjectID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41345401/

相关文章:

bash - 将 Azure 中的 ObjectID 转换为显示名称

ruby - 为什么 object_id 在 windows 而不是在 linux 上持续存在?

node.js - 无法连接到 mongodb

javascript - 使用 Meteor 而不使用其模板库

ruby-on-rails - Mongoid 有 Map/Reduce 吗?

asp.net-core - .NET Core 1.1 - 获取 "Duplicate ' 内容'项目被包含在内”

mongodb - 在grails和MongoDB插件的条件查询中使用allowDiskUse?

c# - VS 2015 MVC6 引用/依赖错误

azure - 如何配置 Azure AD 应用程序注册重定向 URL 以适用于本地主机和 Azure 部署?

javascript - Mongodb 从 ObjectId 获取 3 字节计数器