MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

C# MongoDB — Pobierz element z tablicy zagnieżdżonego dokumentu na podstawie identyfikatora

jeśli dobrze zrozumiałem twoje wymagania, pullFilter jest tym, czego potrzebujesz.

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);

oto pełny program do testowania, jeśli ktoś jest zainteresowany.

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Pełne i częściowe wyszukiwanie tekstu

  2. Jak złapać wyjątek podczas tworzenia instancji MongoClient?

  3. Szyfrowanie danych MongoDB w spoczynku

  4. Kolekcja fragmentaryczna MongoDB nie jest ponownie równoważona

  5. Sortowanie po stronie serwera przy użyciu Mongoose (mongodb + node.js)