$ INC:
db.products.update(
{ _id: "someId" },
{ $inc: { quantity: +2 } }
)
$总和:
db.students.aggregate([
{
$group: {
value: { $sum: valueToAdd},
}
}
])
这是我到目前为止的结果,但仍然无法正常工作。
Bson filter = Filters.eq("_id", someId);
UpdateOptions options = new UpdateOptions().upsert(true);
Bson incrementFirstTry = new Document("$inc", new Document().append("quantity", 2));
Bson incrementSecondTry = new Document("quantity", +2);
Bson sumFirstTry = new Document("$sum", new Document("value", valueToAdd))
Bson sumSecondTry = Aggregates.group(someId, Accumulators.sum("value", valueToAdd));
collection.updateOne(filter, incrementFirstTry, options);
collection.updateOne(filter, incrementSecondTry, options);
collection.updateOne(filter, sumFirstTry, options);
collection.updateOne(filter, sumSecondTry, options);
在递增时都表示数量是一个字符串,因此无法将其添加到整数。
当使用$ sum时,它会说:com.mongodb.MongoWriteException:Unknown modifier:$ group OR com.mongodb.MongoWriteException:Unknown modifier:$ sum
我知道我所尝试的并不完全正确,但我不知道如何解决这个问题。
答案 0 :(得分:0)
两个问题:
如果我不得不猜测,我会说quantity
表中的products
字段以某种方式在数量字段中输入了一个字符串。 incrementFirstTry
看起来不错; incrementSecondTry
没有按你的想法行事;它只是将字段设置为正2,而不是将其递增2。
您遗漏了_id
声明中的$group
字段。