- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设,我想将新项目保存/创建到 DynamoDb
表中,当且仅当不存在任何现有项目包含与我设置的值相同的 referenceId
时。
就我而言,如果表中没有任何其他 withReferenceId=123
,我想使用 withReferenceId=123
创建一个项目。
referenceId
不是主键! (我不想这样)
所以代码:
val withReferenceIdValue = "123";
val saveExpression = new DynamoDBSaveExpression();
final Map<String, ExpectedAttributeValue> expectedNoReferenceIdFound = new HashMap();
expectedNoReferenceIdFound.put(
"referenceId",
new ExpectedAttributeValue(new AttributeValue().withS(withReferenceIdValue)).withComparisonOperator(ComparisonOperator.NE)
);
saveExpression.setExpected(expectedNoReferenceIdFound);
newItemRecord.setReferenceId(withReferenceId);
this.mapper.save(newItemRecord, saveExpression); // do not fail..
这似乎不起作用。
表中已有 referenceId=123
,save()
不会失败。我预计 this.mapper.save 会失败并出现异常。
问:如何使其有条件失败?
我还检查了 this one 他们建议添加辅助表(事务状态表)..因为似乎 saveExpression 仅适用于主/分区键...如果是这样:
not sure why there that limitation. in any case if it is primary key one can not create duplicated item with the same primary key.. why creating conditions on first place. 3rd table is too much.. why there is not just NE to whatever field I want to use. I may create an index for this filed. not being limited to use only primary key.. that what I mean
更新:
我的表映射代码:
@Data // I use [lombok][2] and it does generate getters and setters.
@DynamoDBTable(tableName = "MyTable")
public class MyTable {
@DynamoDBHashKey(attributeName = "myTableID")
@DynamoDBAutoGeneratedKey
private String myTableID;
@DynamoDBAttribute(attributeName = "referenceId")
private String referenceId;
@DynamoDBAttribute(attributeName = "startTime")
private String startTime;
@DynamoDBAttribute(attributeName = "endTime")
private String endTime;
...
}
最佳答案
如果我错了,请纠正我,但来自:
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/dynamodb-dg.pdf
Conditional Writes By default, the DynamoDB write operations (PutItem, UpdateItem, DeleteItem) are unconditional: each of these operations will overwrite an existing item that has the specified primary key
主键 - 这让我认为条件写入仅适用于主键
--
还尝试使用事务方式从数据库读/写。有一个图书馆。该事件没有 Maven 仓库:https://github.com/awslabs/dynamodb-transactions
作为替代方案,似乎是使用带有主键的第三个事务表,该主键负责告诉您是否可以读取或写入该表。 (丑陋)正如我们在这里回复的:DynamoDBMapper save item only if unique
我猜(根据设计)还有另一种选择:以某种方式设计表,以便使用主键作为业务键,这样您就可以将其用于条件写入 .
--
另一个选择:使用 Aurora :)
--
另一个选项(正在调查):https://aws.amazon.com/blogs/database/building-distributed-locks-with-the-dynamodb-lock-client/ ——这个我也不喜欢。因为它可能会为其他想要在此表中创建新项目的人造成超时。
--
另一个选项:接受这个,让项目创建时发生重复(不包括主键)。并将其作为“垃圾收集”的一部分来处理。取决于场景。
关于java - DynamoDb.创建时有条件写入。通过字段检查是否不等于(NE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50005071/
我正在考虑通过慢速卫星连接创建数据查询 WCF 服务,我真的很喜欢 WCF 数据服务。我看到的问题是 HTTP 是一种非常冗长的格式,由于我所做的一切都是内部和 .NET,是否可以使用 NetTcpB
官方 MongoDB api 对 $ne 写的很少 http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24ne
当我尝试运行此查询时,我正在使用 mysql: Order.findAll({ where: { end_date: { $ne: null, }, }, });
我收藏的文档 rooms具有以下结构: { "_id": { "$oid": "4edaaa4a8d285b9311eb63ab" }, "users": [ {
我正在使用一开始具有以下结构的图表,但是我很难理解何时将其评估为true。 {{- if and .Values.vpceIngress.enabled .Values.http.paths (ne
我的 $ne : "" 无法与 pymongo 正常工作。 hashtable['ACR-WEB-01']=db.logs.find({"host_name" : "WEB-01"}, {"servi
我想获取一些文档,其中字段可能是$in某个数组(如果设置了过滤器,则进行条件查询)。 但是,我还需要无条件检查同一字段是否为 $ne: null。我知道 $in: [some value] 可用于防止
我正在尝试使用如下插入的数据运行以下查询。无论出于何种原因,值中为 0 的 $ne 似乎都不起作用。我使用 v2.0.4 在 linux 和 mac 上都试过了。还使用 mongo shell 运行了
我们有两个类,分别是“Parent”和“child”,如下所示: class Parent { parent_AddUser() { // add user code for
我一直在尝试创建一个奇特的 oh-my-zsh 主题,但不幸的是我遇到了一个恼人的障碍。 eval gray='$FG[245]' yellow='226' ret=$? # error check
我正在尝试排除某些行政区名称(例如布鲁克林、皇后区和史泰登岛)的查询,我只能排除一个,但不知道如何排除多个 只排除一个:db.rest.find({ borough : {$ne : "布鲁克林"}}
第一次在 Rails 项目上使用 Mongoid。 分机号是什么 .ne 以这样的作用域方法表示: scope :subscribed, -> { where( :unsubscri
数据: db.inventory.insertMany([ { _id: 1, item: null }, { _id: 2 }, { _id: 3, ite
db.test.find().pretty(); { "_id" : ObjectId("5537f2cfba0bf10870747d7e"), "a" : 1
我正在尝试查找 tipo=CD 和 canciones 不包含具有 title=Pajaritos 和 cancion=2 的子文档的所有文档> 这就是我想在 canciones 字段中实现的目标:
我一直在尝试执行以下 UNIX shell 脚本,但它不起作用。我通过 KornShell (ksh) 运行它。 echo $?; if [ $? -ne 0 ] then failed $LINE
所以我有如下所示的这一系列整数 from pandas import Series s = Series([1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1
假设,我想将新项目保存/创建到 DynamoDb 表中,当且仅当不存在任何现有项目包含与我设置的值相同的 referenceId 时。 就我而言,如果表中没有任何其他 withReferenceId=
在 Android 应用程序中,我想根据以下格式的坐标设置地理点 50 27.858N,004 57.146E。我阅读了以下主题 how to convert coordinates to geoPo
我在 Express Node.js 服务器上运行了以下两个文件: 首页.js var express = require('express') var sequelize = require('se
我是一名优秀的程序员,十分优秀!