我正在使用 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()));
如果您更适应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);
从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));
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 当我们运行上述程序