我有这个问题中描述的情况
我需要一些帮助来使用官方 MongoDb C# 驱动程序编写此代码。
我不仅想从文档数组中更新一项,而且如果没有带有_arrayId 的此类项,我还想创建新的一项。此外,不应该有两个具有相同 _arrayId 的数组项(我曾尝试使用AddToSet
但没有运气)。
真是头疼;我希望有更简单的方法来实现这一点。
var actionUpdate = Update.Set("Votes.$", vote.ToBsonDocument());
var actionPush = Update.Push("Votes", vote.ToBsonDocument());
var actionPull = Update.Pull("UserId", vote.UserId);
var querySpecific = Query.And(
Query.EQ("_id", new ObjectId(_contentId)),
Query.EQ("Votes.UserId", vote.UserId));
var queryPromise = Query.EQ("_id", new ObjectId(_contentId));
MongoCollection collection = null;
if (_type == ContentType.Promise)
collection = DataService.PromiseSet.Collection;
var userVotes = collection.Count(querySpecific);
if (userVotes == 1)
{
collection.Update(querySpecific, actionUpdate);
}
else if (userVotes == 0)
{
collection.Update(queryPromise, actionPush);
}
else
{
collection.Update(queryPromise, actionPull);
collection.Update(queryPromise, actionPush);
}
我感谢任何帮助,谢谢。