2016-04-09 25 views
0

I bazı kriterleri bir nesne kaldırarak dizi değiştirmek için çalışıyorumBir belgeyi diziden nasıl kaldırabilirim?

{ 
    "_id" : ObjectId("5708bf40a86e6f5bd1f45354"), 
    "companyId" : ObjectId("5708bed6a86e6f5bd1f4534f"), 
    "descriptions" : [ 
     { "id" : ObjectId("5708bf40a86e6f5bd1f45351"), "description" : "test" }, 
     { "id" : ObjectId("5708bf40a86e6f5bd1f45352"), "description" : "test1" }, 
     { "id" : ObjectId("5708bf40a86e6f5bd1f45353"), "description" : "test2" } 
    ] 
} 

ve şimdi de bu yapıya sahip bir doküman ekledikten - bu durumda belirli bir id nesneyi uzaklaştırmak için ihtiyaç . İşte

Ben Bu setCollection yöntem updateOne hiç bir şey yapmaz

private MongoCollection<Document> setCollection(final String collectionName){ 
    return db.getCollection(collectionName); 
} 

herhangi bir başarı

public void deleteCustomField(final String descriptionId, final ObjectId companyId){ 
    MongoCollection<Document> collection = setCollection(CUSTOM_FIELDS_COLLECTION); 

    collection.updateOne(and(eq("companyId", companyId), eq("descriptions.id", new ObjectId(descriptionId))), new Document("$unset", new Document("descriptions.description", ""))); 
} 

olmadan, şimdiye kadar yapıyorum budur. Sorgunun tuhaf olduğunu biliyorum, ancak neler olduğunu ve belgeden dizinin nasıl kaldırılacağını anlayamıyorum. Ayrıca $pull ile denedim ama hiç şansım olmadı.

Burada küçük ve gerçekten basit bir şey eksik olduğumu biliyorum, ama bir MongoDB başlangıç ​​olarak, bunu tespit edemiyorum.

Bana itiraz edebilir misiniz?

cevap

1

Sen new Document("$pull", new Document("descriptions.id", new ObjectId(descriptionId))) tarafından new Document("$unset", new Document("descriptions.description", "")) yerine deneyebilir. pull operator belgesine bakın.

+0

Cevabınız için teşekkürler, bazı iyi belgelerin okunmasından sonra çalışmayı başardım. – Slim

+0

Bir şey değil. Çözümüm çalışıyor mu? İstediğinize daha uygun bir şey bulursanız, lütfen yanıt olarak ekleyin. – tartard

İlgili konular