GaneshP
GaneshP

Reputation: 766

MongoDB Array modify Using Java

I am new to MongoDB, I want to remove an element from array structure as shown below:

{
    "Data" : [
        {           
            "url" : "www.adf.com"
            "type":7
        },
        {

            "url" : "www.pqr.com"
            "type":2
        }
        {           
            "url" : "www.adf.com"
            "type":3
        },
        {

            "url" : "www.pqr.com"
            "type":5
        }
    ],

}

I want to remove url=www.adf.com which has type as lowest values i.e in this document my query should remove type=3 and return document as below:

{
        "Data" : [
            {           
                "url" : "www.adf.com"
                "type":7
            },
            {

                "url" : "www.pqr.com"
                "type":2
            }

            {

                "url" : "www.pqr.com"
                "type":5
            }
        ],

    }

Upvotes: 1

Views: 393

Answers (2)

Jhanvi
Jhanvi

Reputation: 5139

The query shown by @shakthydoss can be described in java as follows:

    MongoClient mongoClient = new MongoClient("SERVER", 27017);
    DB db = mongoClient.getDB("DB_NAME");
    DBCollection coll1 = db.getCollection("COLLECTION_NAME");
    DBObject eleMatch = new BasicDBObject();
    eleMatch.put("url", "www.pqr.com");
    eleMatch.put("type", new BasicDBObject("$lte", 50));
    BasicDBObject up = new BasicDBObject();
    up.put("$elemMatch", eleMatch);
    BasicDBList basicDBList = new BasicDBList();
    basicDBList.add(up);
    DBObject query = new BasicDBObject("Data", new BasicDBObject(" $all", basicDBList));
    coll1.find(query);

Upvotes: 1

shakthydoss
shakthydoss

Reputation: 2631

Use $all with $elemMatch

If the field contains an array of documents, you can use the $all with the $elemMatch operator.

db.inventory.find( {
                 Data: { $all: [
                                { "$elemMatch" : { url : "www.pqr.com": "M", type: { $lte: 50} } },

                              ] }
               } )

Upvotes: 0

Related Questions