我一直坐在这个问题上几个小时,无法找到解决方案,所以我决定寻求你的帮助。我的查询有什么问题?问题是它在数组内部创建了数组,尽管我想要的结果是简单的数组。
BasicDBList list = new BasicDBList();
for (Paths pair : objects)
{
list.add(new BasicDBObject("path", pair.getPath())
.append("thumbnailPath, pair.getThumbnailPath()));
}
BasicDBObject updateCommand = new BasicDBObject();
updateCommand.append( "$push", new BasicDBObject( "imageContent", list ) );
WriteResult result = viewsCollection.update( new BasicDBObject(MongoFieldNames.ID, groupId), updateCommand, true, true );
推送数组的结果是
"imageContent" : [
[
{
"path" : "sadL.png",
"thumbnailPath" : sad.png"
},
{
"path" : "someImgL.png",
"thumbnailPath" : "someimg.png"
}
]
]
答案 0 :(得分:0)
$ push将创建数组属性(如果它不存在)。所以在这种情况下,它会创建属性“imageContent”。然后它推送你给出的值:一个数组。你想要的只是$ set。
答案 1 :(得分:0)
我无法看到此代码,因为您没有列出它。但是,这里的问题似乎是list
变量,它很可能实际 数组本身。
因此,您要添加实际数组,然后使用$push
运算符代替BasicDBObject updateCommand = new BasicDBObject();
updateCommand.append( "$push", new BasicDBObject(
"imageContent", new BasicDBObject( "$each", list )
));
:
{{1}}
将采用数组/列表并将所有列出的项目添加到现有数组中,而不是"推" 数组到现有数组中。