Mongodb-java如何将新对象插入到数组Object的起始索引中

时间:2017-03-06 18:52:42

标签: java spring mongodb

我有一个包含以下架构的集合,

        {
                "_id" : ObjectId("58b9d6b9e02fd02963b7d227"),
                "id" : 1,
                "ref" : [
                        {
                                "no" : 101
                        },
                        {
                                "no" : 100
                        }
                        ]
        }

当我试图将子Object推送到Object的ArrayList时,它被添加到数组的末尾,但我的目标是将对象推入数组的起始索引,我尝试使用此代码,但它将对象插入到阵列失败,

Java代码,

            Document push = new Document().append("$push", new Document().append("ref", new Document().append("no", 102)));
            collection.updateMany(new Document().append("id", 1), push);

ExpectedResult应该是,

            {
                    "_id" : ObjectId("58b9d6b9e02fd02963b7d227"),
                    "id" : 1,
                    "ref" : [
                            {
                                    "no" : 102
                            },
                            {
                                    "no" : 101
                            },
                            {
                                    "no" : 100
                            }
                            ]
            }

1 个答案:

答案 0 :(得分:2)

使用$ position修饰符指定数组中的位置。

Mongodb-Java驱动程序,

ArrayList<Document> docList = new ArrayList<Document>();
docList.add(new Document().append("no", 102));
Document push = new  Document().append("$push", new Document().append("ref", new Document().append("$each", docList).append("$position", 0)));
collection.updateMany(new Document().append("id", 1), push);