![](/img/trans.png)
[英]How can I save entire MongoDB collection to json/bson file using C#?
[英]how can i add an item to an array inside json object and save it to mongodb using c#
我正在嘗試將json項目添加到json對象中存在的數組中以使用c#將其保存在mongodb上,我有此元素
{
"_id" : ObjectId("5cf67ad97739bfe8525e5353"),
"Email" : "eyal@gmail.com",
"Username" : "eyal",
"Password" : "1234",
"Tokens" : [
{
"Tokennumber" : "123",
"Valid" : "true",
"LoginDate" : ISODate("2019-06-04T00:00:00.000Z")
},
{
"Tokennumber" : "124",
"Valid" : "false",
"LoginDate" : ISODate("2019-06-04T00:00:00.000Z")
}
]
}
我想使用C#將令牌項目添加到令牌數組
我有此代碼查詢所請求的項目
var client = new MongoDB.Driver.MongoClient();
var db = client.GetDatabase("SupaFoo");
var _users = db.GetCollection<Users>("Users");
var user =
(from u in _users.AsQueryable<Users>()
where u.email == login.Email && u.password == login.Password
select u).ToList();
新項目應該是這樣的
{
"_id" : ObjectId("5cf67ad97739bfe8525e5353"),
"Email" : "eyal@gmail.com",
"Username" : "eyal",
"Password" : "1234",
"Tokens" : [
{
"Tokennumber" : "123",
"Valid" : "true",
"LoginDate" : ISODate("2019-06-04T00:00:00.000Z")
},
{
"Tokennumber" : "124",
"Valid" : "false",
"LoginDate" : ISODate("2019-06-04T00:00:00.000Z")
},
{/* newly added item */
"Tokennumber" : "555",
"Valid" : "true",
"LoginDate" : ISODate("2019-06-05T00:00:00.000Z")
}
]
}
您可以使用AddToSet
( docs here )方法將項目原子添加到對象數組
var updateDefinition = Builders<Users>.Update.AddToSet(x => x.Tokens, new Token());
var filterDefinition = Builders<Users>.Filter.Eq(x => x.Id, userId);
_users.UpdateOne(filterDefinition, updateDefinition);
除非您要執行一些復雜的字符串操作,否則恐怕您必須首先對其進行反序列化。 例如:
var user= JsonConvert.DeserializeObject<User>(yourJson);
user.Tokens.Add(new Token());
var _users = db.GetCollection<Users>("Users"); // if you have this initialized before re-use it
var filter = Builders<User>.Filter.Eq(s => s.Id, user.Id);
var result = await collection.ReplaceOneAsync(filter, user)
這種使用Json.net: https://www.newtonsoft.com/json
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.