按 id 从 mongodb 版本 2.4 的子文档中删除
Remove from subdocument from mongodb version 2.4 by id
这是我的文档
Post{
"_id" : 1,
"Code" : CSUUID("ba22a2a3-e6b5-4ce6-a3ad-20e5196cca46"),
"Zip" : 123456,
"Text" : "Hello",
"Tags" : [{
"_id" : 1,
"Tag" : "Tag8"
}, {
"_id" : 2,
"Tag" : "Tag9"
}, {
"_id" : 3,
"Tag" : "Tag10"
}]
}
我需要在 c# 中通过 id 删除 'Tags' 之一。
例如:delete from post where tag.id = 2
我找到了答案。
var pull = Update<Post>.Pull(x => x.Tags, builder => builder.EQ(q => q.Id, 2)).ToBsonDocument();
var filter1 = Builders<Post>.Filter.And(Builders<Post>.Filter.Eq(a => a.Id, 1),
Builders<Post>.Filter.ElemMatch(q => q.Tags, t => t.Id == 2));
collection.UpdateOneAsync(filter1, pull);
MongoDB.Bson version : 2.0.1.27
MongoDB.Driver version :2.2.0.262
MongoDB.Driver.Code version :2.2.0.262
const int id = 1;
var pull = Builders<Post>.Update.PullFilter(x => x.Tags, a => a.Id == id);
var filter1 = Builders<Post>.Filter.And(Builders<Post>.Filter.Eq(a => a.Id, 1), Builders<Post>.Filter.ElemMatch(q => q.Tags, t => t.Id == id));
collection.UpdateOneAsync(filter1, pull);
这是我的文档
Post{
"_id" : 1,
"Code" : CSUUID("ba22a2a3-e6b5-4ce6-a3ad-20e5196cca46"),
"Zip" : 123456,
"Text" : "Hello",
"Tags" : [{
"_id" : 1,
"Tag" : "Tag8"
}, {
"_id" : 2,
"Tag" : "Tag9"
}, {
"_id" : 3,
"Tag" : "Tag10"
}]
}
我需要在 c# 中通过 id 删除 'Tags' 之一。
例如:delete from post where tag.id = 2
我找到了答案。
var pull = Update<Post>.Pull(x => x.Tags, builder => builder.EQ(q => q.Id, 2)).ToBsonDocument();
var filter1 = Builders<Post>.Filter.And(Builders<Post>.Filter.Eq(a => a.Id, 1),
Builders<Post>.Filter.ElemMatch(q => q.Tags, t => t.Id == 2));
collection.UpdateOneAsync(filter1, pull);
MongoDB.Bson version : 2.0.1.27
MongoDB.Driver version :2.2.0.262
MongoDB.Driver.Code version :2.2.0.262
const int id = 1;
var pull = Builders<Post>.Update.PullFilter(x => x.Tags, a => a.Id == id);
var filter1 = Builders<Post>.Filter.And(Builders<Post>.Filter.Eq(a => a.Id, 1), Builders<Post>.Filter.ElemMatch(q => q.Tags, t => t.Id == id));
collection.UpdateOneAsync(filter1, pull);