简体   繁体   中英

Mongodb Java Driver Insert Array to Collection

I have a little problem while inserting array values to existing collection in MongoDB. I have a collection as below ;

{ "_id" : "1", "username" : "", "password" : "!", "firm" : "SpringSource", "roles" : [ "admin", "client" ], "items" : [ { "_id" : "1b7cb58b-dc5b-4d27-9402-d43d3844d11d", "id" : 1, "title" : "Coffee", "price" : "12", "category" : "Coffee", "images" : "Obj1", "description" : "Coffee" } ], "latitude" : "39.877619", "longitude" : "32.682537" }

What I need is changing "images" tag's value to array value as below;

 "items" : [ { "_id" : "1b7cb58b-dc5b-4d27-9402-d43d3844d11d", "id" : 1, "title" : "Coffee", "price" : "12", "category" : "Coffee", "images" : ["Obj1","Obj2"], "description" : "Coffee" } ], "latitude" : "39.877619", "longitude" : "32.682537" }

I have Items class in Java and objects of this class inserted to MongoDB as below;

    Item item= new Item(id,title,price,category,image,description);
    //String all=item.toString();
    ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
    String json = ow.writeValueAsString(item);

    Document doc = Document.parse( json.toString() );
    db.getCollection("users").updateOne(new Document("username",uname1),
            new Document("$push", new Document("items", doc)));

It works as expected but as I indicated above I need to store images as an array. I tried something below;

List<String> topics = new ArrayList<String>();
topics.add("Obj1");
topics.add("Obj2");


col.findOneAndUpdate(Filters.eq("_id", new.    ObjectId("58b1404d002d2b1a481b8ddf")), Updates.pushEach("images",    topics));

But it did not work. I have searched a lot there are many examples but I could not figure out how to do. Any recommendations?

Thanx

The simplest idea is to change Item class and instead of

String images;

change to

List<String> images;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM