gpt4 book ai didi

c# - 如何在 mongodb .net 驱动程序中将元素插入数组

转载 作者:可可西里 更新时间:2023-11-01 10:03:51 25 4
gpt4 key购买 nike

我的数据如下所示

> db.people.findOne({"Name":"Jones"})
{
"_id" : ObjectId("551dcbdc360fbd77107f8a37"),
"Name" : "Jones",
"Age" : 30,
"Profession" : "Hacker"
}

类定义为

class Person
{
public ObjectId Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public List<string> Colors { get; set; }
public List<Pet> Pets { get; set; }
}

class Pet
{
public string Name { get; set; }
public string Type { get; set; }
}

然后我尝试将 Pet 元素插入 Pets 字段

  var pet = new Pet
{
Name = "Boneless",
Type = "Gold Fish",
};

var result = await coll_t.UpdateOneAsync(Builders<Person>.Filter.Eq("Name", "Jones"), Builders<Person>.Update.Push(x => x.Pets, pet));

Console.WriteLine(string.Format("MatchedCount = {0}; ModifiedCount = {1}; UpsertedId = '{2}';"), result.MatchedCount.ToString(), result.ModifiedCount.ToString(), result.UpsertedId.ToString());

更新没有报错。但它没有更新。结果中的 MatchedCount 为 0,ModifiedCount 也为 0。我错过了什么?

谢谢,

附言。 Console.WriteLine(....) 没有显示任何看起来它遇到 Uncaught Error 。任何想法?

最佳答案

如果 MatchedCount 为 0,则表示未找到记录。 coll_t 正确吗?您使用的是正确的数据库和集合吗?

尝试更新您的 key 而不是名称。用这个替换你的过滤器:

Builders<Person>.Filter.Eq("_id", new ObjectId("551dcbdc360fbd77107f8a37"))

另外,我会在 Person 中初始化您的 Pets 集合,这样当您没有 Pets 时,您的数据库就会知道它是一个空集合。

public Person()
{
Pets = new List<Pet>();
}

关于c# - 如何在 mongodb .net 驱动程序中将元素插入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29474692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com