首页 > 解决方案 > 如何在 C# 中查询 MongoDb 的 id 字段并列出 id 的列表

问题描述

我正在尝试遍历 MongoDb 数据库集合中的 id。目标是遍历这些 id 并使用 id 创建具有不同 id 的 json 文件。我相信我写的查询返回了所有的 id,但是我得到了下面的错误。

Inner Exception 1:
FormatException: '9a1c458c-82Dd-43b4-a963-76a96d374580' is not a valid 24 digit hex string.

以下是我获取所有 id 的查询

var thingsDoc = demoThings.AsQueryable().Where(a => a._id != null).ToList();

以下是我的事物属性类

public class Things
    {
        [BsonRepresentation(BsonType.ObjectId)]
        public ObjectId _id { get; set; }
    }

我认为问题在于如何定义属性。还是我的查询有问题?从研究中我知道它抱怨的原因是因为格式中的破折号。但没有找到任何解决方法来解决这个问题。非常感谢您的帮助。

标签: c#mongodbbsonobjectidformatexception

解决方案


我已经能够解决我的问题。似乎使用模型并在 ObjectId 和 String 之间进行转换使我的程序无法运行。所以下面的方法解决了这个问题。

var demoThings = DBConnect.CosmosClient.GetCollection<BsonDocument>("Things");
            foreach(var doc in demoThings.Find(x => x["_id"] != "").ToList())
            {
                thingList.Add(doc["_id"].ToString());
            }

我的目标是获取集合并添加所有 _id 并将它们添加到列表中,以便我可以模拟 json 文件中的数据并将 id 附加到 JSON。有了上面的内容,我能够将 id 和它们抓取到一个列表中。


推荐阅读