当前位置: 首页 > 知识库问答 >
问题:

(MongoDB Java) $push数组

黄弘新
2023-03-14

我正在使用 mongo 2.2.3 和 java 驱动程序。我的困境是,我必须将字段和值$push到数组中,但我似乎无法弄清楚如何做到这一点。我的数据示例:

"_id" : 1,
"scores" : [
    {
        "type" : "homework",
        "score" : 78.97979
    },
    {
        "type" : "homework",
        "score" : 6.99
    },
    {
        "type" : "quiz",
        "score" : 99
    }
]

我可以在外壳中$push:

db.collection.update({_id:1},{$push:{scores:{type:"quiz", score:99}}})

但当我把它翻译成java时,我混淆了自己,把键盘扔在了墙上。

我的java代码(不完整且错误):

DBObject find = new BasicDBObject("_id", 1);
DBObject push = new BasicDBObject("$push", new BasicDBObject(
                        "scores", new BasicDBObject()));

共有3个答案

吕子真
2023-03-14

如果您更适应shell的查询格式,您可能会发现使用< code>JSON.parse为< code>$push构造< code>DBObject会更容易:

import com.mongodb.util.JSON;

String json = "{$push:{scores:{type:'quiz', score:99}}}";
DBObject push = (DBObject) JSON.parse(json);
彭令秋
2023-03-14

mongodb-驱动程序3.1开始。有一个构建器类com.mongodb.client.model.更新,每个更新案例都有适当的方法。在这种情况下,这将是:

Document score = new Document().append("type", "quiz")
                               .append("score",99);

collection.updateOne(eq("_id", "1"),Updates.addToSet("scores", score));
卞云瀚
2023-03-14
DBObject listItem = new BasicDBObject("scores", new BasicDBObject("type","quiz").append("score",99));
DBObject updateQuery = new BasicDBObject("$push", listItem);
myCol.update(findQuery, updateQuery);
 类似资料:
  • 从本地数据库push到远程数据库时,要fast-forward合并push的分支。如果发生冲突,push会被拒绝的。 若要共享在本地数据库创建的分支,需要明确的push。因此,没有执行push就不会给远程数据库带来影响,因而可以自由的创建自己的分支。 基本上,远程数据库共享的提交是不能修改的。如果修改的话,跟远程数据库同步的其他数据库的历史记录会变得很奇怪的。

  • push 方法 向数组的尾部添加元素,返回新的长度。 语法: arrayObject.push( e1, e2, e3, ... ex ); 参数说明: e1 - 必需。要添加到数组的第一个元素。 e2/ex - 可选。要添加到数组的其他元素。 返回值: 把指定的值添加到数组后的新长度。 说明: push() 方法可把它的参数顺序添加到 arrayObject 的尾部。它直接修改 array

  • 描述 (Description) Javascript数组push()方法将给定元素追加到数组的最后一个并返回新数组的长度。 语法 (Syntax) 其语法如下 - array.push(element1, ..., elementN); 参数细节 (Parameter Details) element1, ..., elementN:要添加到数组末尾的元素。 返回值 (Return Value

  • 描述 (Description) 此函数将LIST中的值推送到列表ARRAY的末尾。 与pop一起使用来实现堆栈。 语法 (Syntax) 以下是此函数的简单语法 - push ARRAY, LIST 返回值 (Return Value) 此函数返回新数组中的元素数。 例子 (Example) 以下是显示其基本用法的示例代码 - #!/usr/bin/perl -w $, = ","; @arr

  • Push模块管理推送消息功能,可以实现在线、离线的消息推送,通过plus.push可获取推送消息管理对象。 方法: addEventListener: 添加推送消息事件监听器 clear: 清空所有推送消息 createMessage: 创建本地消息 getAllMessage: 获取所有推送消息 getClientInfo: 获取客户端推送标识信息 getClientInfoAsync: 异步获

  • 这用于将值推送到Rexx堆栈。 语法 (Syntax) push value 参数 (Parameters) Value - 需要压入堆栈的值。 返回值 (Return Value) 没有 例子 (Example) /* Main program */ options arexx_bifs push 'Tutorial' pull input say input 当我们运行上述程序