Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

295
Visualizações
Insertar elemento en una matriz anidada en Mongodb

Tengo esto :

 { "_id" : ObjectId("4fb4fd04b748611ca8da0d48"), "Name" : "Categories", "categories" : [{ "_id" : ObjectId("4fb4fd04b748611ca8da0d46"), "name" : "SubCategory", "sub-categories" : [{ "_id" : ObjectId("4fb4fd04b748611ca8da0d47"), "name" : "SubSubCategory", "standards" : [] }] }] }

Me gustaría agregar una nueva subcategoría usando el controlador C#. ¿Hay una manera óptima de hacer esto?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Puede hacer esto usando FindOneAndUpdateAsync y el operador posicional

 public async Task Add(string productId, string categoryId, SubCategory newSubCategory) { var filter = Builders<Product>.Filter.And( Builders<Product>.Filter.Where(x => x.Id == productId), Builders<Product>.Filter.Eq("Categories.Id", categoryId)); var update = Builders<Product>.Update.Push("Categories.$.SubCategories", newSubCategory); await collection.FindOneAndUpdateAsync(filter, update); }
over 4 years ago · Santiago Trujillo Relatório

0

También puede usar el operador posicional usando expresiones Linq:

 public async Task Add(string productId, string categoryId, SubCategory newSubCategory) { var filter = Builders<Product>.Filter.And( Builders<Product>.Filter.Where(x => x.Id == productId), Builders<Product>.Filter.ElemMatch(x => x.Categories, c => c.Id == categoryId)); var update = Builders<Product>.Update.Push(x => x.Categories[-1].SubCategories, newSubCategory); await collection.FindOneAndUpdateAsync(filter, update); }

Y libérese del uso de nombres de propiedad codificados dentro de cadenas.

over 4 years ago · Santiago Trujillo Relatório

0

Añadiendo un ejemplo para mi caso. Funcionó pero sin el signo de dólar al ingresar dentro de una matriz:

 public async Task AddCustomMetadata() { Dictionary<string, string> dic = new Dictionary<string, string>(); dic.Add("EntityCustomMetadataFieldId", "5bf81296-feda-6447-b45a-08d5cb91211c"); var filter = Builders<BsonDocument>.Filter.Eq("_id", "6c7bb4a5-d7cc-4a8d-aa92-b0c89ea0f7fe"); var update = Builders<BsonDocument>.Update.Push("CustomMetadata.Fields", dic); await _context.BsonAssets.FindOneAndUpdateAsync(filter, update); }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda