[MongoDB]對數組操作

來源:互聯網
上載者:User

標籤:

摘要

在實際開發中遇到更新某個document中的數組的值,這裡做一下記錄。

這裡使用的驅動為

using MongoDB.Bson;
using MongoDB.Driver;

相關文章

[MongoDB]入門操作

[MongoDB]增刪改查

[MongoDB]count,gourp,distinct

[MongoDB]mapReduce

[MongoDB]Profiling效能分析

[MongoDB]索引

Mongodb c#增刪改查

mongodb培訓

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。

[MongoDB]對數組操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.