sql >> データベース >  >> NoSQL >> MongoDB

C#MongoDB-IDに基づいてネストされたドキュメントの配列からアイテムをプルします

    要件を正しく理解していれば、pullFilter 必要なものです。

    var filter = Builders<UserCollection>.Filter.Where(u => u.User.Contacts.Any(c => c._Id == contactID));
    var update = Builders<UserCollection>.Update.PullFilter(u => u.User.Contacts, c => c._Id == contactID);
    collection.UpdateOne(filter, update);
    

    誰かが興味を持っているかどうかをテストするための完全なプログラムは次のとおりです。

    using MongoDB.Entities; // PM> Install-Package MongoDB.Entities
    using MongoDB.Bson;    
    using System.Linq;
    
    namespace StackOverflow
    {
        public class Program
        {
            public class UserCollection : Entity
            {
                public User User { get; set; }
            }
    
            public class User
            {
                public Contact[] Contacts { get; set; }
            }
    
            public class Contact
            {
                public ObjectId _Id { get; set; }
            }
    
            private static void Main(string[] args)
            {
                new DB("test");
    
                var contactID = ObjectId.GenerateNewId();
    
                (new UserCollection
                {
                    User = new User
                    {
                        Contacts = new[]
                        {
                            new Contact { _Id = ObjectId.GenerateNewId()},
                            new Contact { _Id = contactID}
                        }
                    }
                }).Save();
    
                DB.Update<UserCollection>()
                  .Match(u => u.User.Contacts.Any(c => c._Id == contactID))
                  .Modify(b => b.PullFilter(u => u.User.Contacts, c => c._Id == contactID))
                  .Execute();
            }
        }
    }



    1. Mongodbは、jsエンジンなしではmapreduceを実行できません

    2. Mongoidの埋め込みドキュメントからフィールドを除外するにはどうすればよいですか?

    3. MongoDBでSQLLIKEステートメントを使用する方法

    4. MongoDB + Azure + Android:エラー:com.mongodb.MongoException:マスターと通信せず、再試行が使い果たされました