mongodb C#中按ID过滤并获取所有详细信息并不显示数据库中的所有详细信息

eoigrqb6  于 2022-11-03  发布在  Go
关注(0)|答案(2)|浏览(209)

我是C#的新手,目前正在尝试CRUD操作。我已经完成了创建、获取所有详细信息、更新和删除。但我无法通过ID获取所有详细信息。
我有一个名为'fuel'的数据库,我在其中添加了shedId。对于每个shed,可以有多个fuel。现在我想按每个shedId获取fuel的详细信息。
在这里,您可以看到shedID:1 x1c 0d1x的2个数据
但是当我尝试通过shedID过滤数据库时,我得到了这样的响应。由于我是C#新手,我不知道如何获得它。我在谷歌上搜索了一下,但没有找到解决方案。

请帮我拿这个。
这是我试过的代码

//Get Fuel by each shed id
    [HttpGet("shed/{id}")]
    public JsonResult Get(int id)
    {
        MongoClient dbClient = new MongoClient(_configuration.GetConnectionString("FuelQueueAppConnection"));

        var filter = Builders<Fuel>.Filter.Eq("shedId", id);

        var dbList = dbClient.GetDatabase("FuelQueue").GetCollection<Fuel>("Fuel").Find(filter);
        return new JsonResult(dbList);
    }

总结-我有一个叫做燃料的数据库。在那里我有很多燃料。每个燃料都有一个shedID,一个shedID可以有多个燃料。现在我需要找到每个shedID的燃料列表。(像ShedID:1 =〉2燃料细节)

ecbunoof

ecbunoof1#

我建议两件事,不要试图直接将return与你的对象相匹配,使用泛型,这样如果格式改变或不对齐,你仍然有一个return。
此外,如果Mongo返回一个列表,请使用.ToList()方法。

//filter by time values less than 2019-11-22 T 06:13:20.000Z
                    var filter = Builders<BsonDocument>.Filter.Eq("shed_id", 1);

                    //get the collection from the new db
                    var NewDB = dbNewClient.GetDatabase("FuelQueue");
                    var NewCollection = NewDB.GetCollection<BsonDocument>("Fuel");

                    //get all the documents that satisfy the filter
                    var documents = NewCollection.Find(filter).ToList();

这将返回Shed 1的所有记录,在此您必须解析每条记录中的燃料数据。

olqngx59

olqngx592#

我刚刚确定,由于结果需要一个列表,我必须在过滤后添加ToList()。我添加的解决方案,因为它可能会帮助别人在未来。

//Get Fuel by each shed id
    [HttpGet("shed/{id}")]
    public JsonResult Get(int id)
    {
        MongoClient dbClient = new MongoClient(_configuration.GetConnectionString("FuelQueueAppConnection"));

        var filter = Builders<Fuel>.Filter.Eq("shedId", id);

        var dbList = dbClient.GetDatabase("FuelQueue").GetCollection<Fuel>("Fuel").Find(filter).ToList();
        return new JsonResult(dbList);
    }

感谢大家对学员的帮助。

相关问题