【问题标题】:Mongodb Java Driver Insert Array to CollectionMongodb Java驱动程序将数组插入集合
【发布时间】:2019-03-06 11:05:29
【问题描述】:

在将数组值插入 MongoDB 中的现有集合时,我遇到了一个小问题。我有一个如下的集合;

{ "_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" }

我需要将“图像”标签的值更改为数组值,如下所示;

 "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" }

我在 Java 中有 Items 类,并将此类的对象插入到 MongoDB 中,如下所示;

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

它按预期工作,但正如我上面指出的,我需要将图像存储为一个数组。我在下面尝试了一些方法;

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


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

但它不起作用。我搜索了很多,有很多例子,但我不知道该怎么做。有什么建议吗?

感谢

【问题讨论】:

  • 但在示例中您只有一张图片https://res.cloudinary.com/dznqctqoe/image/upload/v1550652877/ristretto-bianco.jpg 您想如何从中创建二元素数组?也许应该是"images":["https://res.cloudinary.com/dznqctqoe/image/upload/v1550652877/ristretto-bianco.jpg"]
  • 其实你问的是我的问题。一两个元素无所谓,我需要将图像存储为数组的值。
  • 最简单的想法是改变Item类,而不是String imagesList&lt;String&gt; images
  • @MichałZiober 它起到了链条的作用。谢谢你的帮助,我很感激

标签: java json mongodb mongodb-query mongodb-java


【解决方案1】:

最简单的想法是改变Item类而不是

String images;

改成

List<String> images;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    相关资源
    最近更新 更多