我需要使用官方C#驱动程序从mongo db中的集合中删除一些记录。我的代码如下。
public static void Remove(List<ObjectId> objectIds)
{
ObjectMongoCollection.Remove(Query.In("NotificationId", new BsonArray(objectIds)), SafeMode.True);
}
public class Notification
{
public static MongoCollection<Notification> ObjectMongoCollection = MongoHelper.GetMongoServer("MongoKelimeYarisi").GetDatabase("KelimeYarisi").GetCollection<Notification>("Notification");
[BsonId]
public ObjectId NotificationId { get; set; }
public int PlayerId { get; set; }
public string OpponentName { get; set; }
public string gameId { get; set; }
public DateTime CreateDate { get; set; }
public NotificationStatus Status = NotificationStatus.New;
public NotificationType Type = NotificationType.RoundSubmit;
public bool IsPushed { get; set; }
它运行时没有错误但似乎不起作用。如何使用ObjectIds列表删除记录。
也尝试过:
ObjectMongoCollection.Remove(Query.In("_id", new BsonArray(objectIds)), SafeMode.True);
答案 0 :(得分:5)
我使用了一种不同的方法来获取mongo查询并且有效。我构建了一个linq查询并将其转换为mongo查询。
public static void Remove(List<ObjectId> objectIds)
{
var linqQuery = from n in ObjectMongoCollection.AsQueryable<Notification>() where n.NotificationId.In(objectIds) select n;
var mongoQuery = ((MongoQueryable<Notification>)linqQuery).GetMongoQuery();
ObjectMongoCollection.Remove(mongoQuery);
}
答案 1 :(得分:4)
答案 2 :(得分:1)
您可以编写一个名为“
”的方法public void destroy() {
...
}
在此方法中,您将使用ObjectIds列表并循环遍历它们。
foreach(Enitity enitity in entities) {
...
}
您可以使用 MongoDB.Driver.Linq 在列表中执行特定查询:
var query = Query<Entity>.EQ(e => e.Attribute, entity.Value);
db.GetCollection<Entity>("Entity").Remove(query);
Value将是您想要的对象值。 这将从包含特定值的db中删除元素。
我希望你觉得这很有用。