为了账号安全,请及时绑定邮箱和手机立即绑定

MongoDB中对数组操作

标签:
MongoDB

摘要

在实际开发中遇到更新某个document中的数组的值,这里做一下记录。

这里使用的驱动为

using MongoDB.Bson;
using MongoDB.Driver;

demo


using MongoDB.Bson;using MongoDB.Driver;using MongoDB.Driver.Builders;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Wolfy.Mongodb
{    class Program
   {        static void Main(string[] args)
       {
       }
   }    class MongoHelper
   {        private static readonly string _db = "";        private static readonly string _col = "";        private static readonly string _ip = "";        private static readonly string _user = "";        private static readonly string _pwd = "";        private static readonly string _connStr = string.Format("mongodb://{0}:{1}@{2}:27017/{3}", _user, _pwd, _ip, _db);        /// <summary>
       /// 为某个userId添加friend,如果数组中不存在则添加        /// </summary>
       /// <param name="userId"></param>
       /// <param name="friendId"></param>
       /// <returns></returns>
       public static bool UpdateOrInsert(string userId, string friendId)
       {            var col = GetCollection();            var query = new QueryDocument { { "userId", userId }, new QueryDocument { { "$nin", new BsonArray().Add(friendId) } } };            var update = Update.Push("friends", friendId).Inc("count", 1);            return col.Update(query, update, UpdateFlags.None).Ok;
       }        private static MongoCollection<BsonDocument> GetCollection()
       {
           MongoClient client = new MongoClient(_connStr);
           MongoServer server = client.GetServer();            var db = server.GetDatabase(_db);            var col = db.GetCollection(_col);            return col;
       }        /// <summary>
       /// 从属性中移除好友        /// </summary>
       /// <param name="userId"></param>
       /// <param name="friendId"></param>
       /// <returns></returns>
       public static bool RemoveFriend(string userId, string friendId)
       {            var col = GetCollection();            var query = new QueryDocument { { "userId", userId } };
           MongoDB.Driver.Builders.UpdateBuilder builder = new MongoDB.Driver.Builders.UpdateBuilder();
           builder.Pull("friends", friendId);            return col.Update(query, builder, UpdateFlags.None).Ok;
       }        /// <summary>
       /// 更新字段值        /// </summary>
       /// <param name="userId"></param>
       /// <param name="dic"></param>
       /// <returns></returns>
       public static bool UpdateFields(string userId, Dictionary<string, object> dic)
       {            var col = GetCollection();            var query = new QueryDocument { { "userId", userId } };
           MongoDB.Driver.Builders.UpdateBuilder builder = new MongoDB.Driver.Builders.UpdateBuilder();            foreach (var item in dic.Keys)
           {
               builder.Set(item, BsonValue.Create(dic[item]));
           }
           builder.Set("dt", DateTime.Now);            return col.Update(query, builder, UpdateFlags.Upsert).Ok;
       }
   }
}

代码

上述是好友列表中的操作。如果好友列表中已经存在,则不再添加,否则添加。省略用c#在做业务的判断了。其实有很多,都可以交给mongodb去做,可以在代码中少很多的if-else。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消