标签: nosql

java.lang.String 类型中没有由 @DynamoDBHashKey 注释的方法或字段

我不知道为什么不运行这个项目。

@Data
@DynamoDBTable(tableName = "tableName")
public class entityName implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @DynamoDBHashKey
    @DynamoDBAutoGeneratedKey
    private String id;

    @DynamoDBRangeKey
    private String rk;

    private String sy;
}

Caused by: java.lang.IllegalArgumentException: No method or field annotated by @DynamoDBHashKey within type java.lang.String!
    at org.socialsignin.spring.data.dynamodb.repository.support.DynamoDBHashAndRangeKeyMethodExtractorImpl.<init>(DynamoDBHashAndRangeKeyMethodExtractorImpl.java:99) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
    at org.socialsignin.spring.data.dynamodb.repository.support.CompositeIdHashAndRangeKeyExtractor.<init>(CompositeIdHashAndRangeKeyExtractor.java:31) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
    at org.socialsignin.spring.data.dynamodb.repository.support.DynamoDBHashAndRangeKeyExtractingEntityMetadataImpl.getHashAndRangeKeyExtractor(DynamoDBHashAndRangeKeyExtractingEntityMetadataImpl.java:71) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
    at org.socialsignin.spring.data.dynamodb.repository.support.DynamoDBIdIsHashAndRangeKeyEntityInformationImpl.<init>(DynamoDBIdIsHashAndRangeKeyEntityInformationImpl.java:49) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
    at org.socialsignin.spring.data.dynamodb.repository.support.DynamoDBEntityMetadataSupport.getEntityInformation(DynamoDBEntityMetadataSupport.java:125) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
    at org.socialsignin.spring.data.dynamodb.repository.support.DynamoDBRepositoryFactory.getEntityInformation(DynamoDBRepositoryFactory.java:104) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
    at org.socialsignin.spring.data.dynamodb.repository.support.DynamoDBRepositoryFactory.getDynamoDBRepository(DynamoDBRepositoryFactory.java:128) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
    at org.socialsignin.spring.data.dynamodb.repository.support.DynamoDBRepositoryFactory.getTargetRepository(DynamoDBRepositoryFactory.java:150) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:305) ~[spring-data-commons-2.1.6.RELEASE.jar:2.1.6.RELEASE]
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$5(RepositoryFactoryBeanSupport.java:297) ~[spring-data-commons-2.1.6.RELEASE.jar:2.1.6.RELEASE]
    at org.springframework.data.util.Lazy.getNullable(Lazy.java:211) ~[spring-data-commons-2.1.6.RELEASE.jar:2.1.6.RELEASE]
    at org.springframework.data.util.Lazy.get(Lazy.java:94) …
Run Code Online (Sandbox Code Playgroud)

java amazon-web-services nosql spring-data amazon-dynamodb

2
推荐指数
1
解决办法
5267
查看次数

DynamoDB 如何设计和查询多个字段

我有一个这样的项目

{
  "date": "2019-10-05",
  "id": "2",
  "serviceId": "1",
  "time": {
    "endTime": "1300",
    "startTime": "1330"
  }
}
Run Code Online (Sandbox Code Playgroud)

现在我的设计方式是这样的:

primary key --> id
Global secondary index --> primary key : serviceId
                       --> sort key : date
Run Code Online (Sandbox Code Playgroud)

按照我现在的设计方式,

* I can query the id
* I can query serviceId and range of date
Run Code Online (Sandbox Code Playgroud)

我希望能够查询以便检索所有项目

* serviceId = 1 AND
* date = "yyyy-mm-dd" AND
* time = {
           "endTime": "1300",
           "startTime": "1330"
         }
Run Code Online (Sandbox Code Playgroud)

我仍然希望能够根据前面的 2 个条件进行查询(按 id 查询,以及按 serviceId 和 rangeOfDate 查询

有没有办法做到这一点?我想的一种方法是创建一个新字段并将其用作索引,例如:合并所有数据,以便合并字段:“1_yyyy-mm-dd_1300_1330 …

database database-design nosql amazon-dynamodb dynamodb-queries

2
推荐指数
1
解决办法
6889
查看次数

MongoDB 聚合 $or 与 $elemMatch、$expr 在 $lookup 管道内

我有 2 个收藏:

用户收藏:

{
    _id: ObjectId
}
Run Code Online (Sandbox Code Playgroud)

托托系列:

{
    _id: ObjectId
    fieldA: {_id: ObjectId}
    fieldB: [{_id: ObjectId}, {_id: ObjectId}]
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试加入 A 集合的元素,其中fieldA 的 id或fieldB 的 id之一与以下聚合的用户 id匹配:

db.users.aggregate([
{
  $lookup: {
    from: "Toto",
    let: { "user_id": "$_id" },
    as: "fcollection",
    pipeline: [
      { $match:  
        {$or:[
          {"fieldB": {$elemMatch: {"_id": "$$user_id"}}}, 
          {$expr: {$eq :["$fieldA._id", "$$user_id"]}}
        ]}
      }
    ]
  }
])
Run Code Online (Sandbox Code Playgroud)

但在输出中,我只是获取了文档中 fieldA 的 id 匹配的位置,但没有获取 fieldB 的 id 匹配的位置。我究竟做错了什么?

mongodb nosql mongodb-query aggregation-framework

2
推荐指数
1
解决办法
3365
查看次数

DynamoDB:如何获取 GSI 分区键的唯一值?

假设在 AWS DynamoDB 中,我有一张表:

ID (Partition key, GSI's Sort Key)   OtherAttribute      Name (GSI's Partition Key)
0                                       1/1/2020                Alice
1                                       2/1/2020                Bob
2                                       3/1/2020                John
3                                       4/1/2020                Alice
4                                       5/1/2020                Bob
5                                       5/1/2020                Michael
Run Code Online (Sandbox Code Playgroud)

我的 GSI 投影了原始表的所有属性。

现在我想最终得到一个Set数据结构{“Alice”,“Bob”,“John”,“Michael”}。

我怎样才能实现这个目标?看来 Scan 操作本身无法选择唯一值,这意味着在我的情况下 Scan 操作无法变得更快,对吗?然后,在获得检索到的所有项目的列表后,我需要对此列表进行操作以提取 column 的唯一值Name,这是执行此操作的唯一方法吗?

因此我想我需要扫描整个表。这里还有一个问题就是,既然我的GSI投影了所有属性,那么扫描GSI还是只扫描原始表会有什么区别吗?我的目标当然是尽快完成这项工作。

有人可以提供一些建议吗?

谢谢!

database duplicates nosql amazon-dynamodb

2
推荐指数
1
解决办法
3455
查看次数

使用排序键的 DynamoDB 版本控制

任何人都使用https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-sort-keys.html中所述的排序键实现了版本控制?

尝试使用打字稿来实现这一点,以构建包含项目版本的数据库。有没有什么方法可以使用 updateItem 来执行此操作,或者是否需要 get + put 操作?

非常感谢任何帮助我入门或帮助的示例!

amazon-web-services nosql amazon-dynamodb amazon-dynamodb-streams

2
推荐指数
1
解决办法
2222
查看次数

firebase实时数据库中的自动增量Id生成器

我使用 firebase 实时数据库和express.js 作为后端。这是我的数据保存片段代码:

const db = require('./firebase_connection').firebaseDatabase

async function saveData(req, model) {
    await db.ref(model).set(req)
    return {"statusCode": "201", "message": "Inserted successfully"}
}

module.exports = { saveData }
Run Code Online (Sandbox Code Playgroud)

这是 json 输出:

{
  "user" : {
    "email" : "TEST77@TEST.com",
    "full_name" : "Hossein Heydari",
    "password" : "test",
    "phone_number" : 54,
    "role" : "client"
  }
}
Run Code Online (Sandbox Code Playgroud)

但我还需要一个自动添加到数据库的Id,就像MongoDB有哪个是_id

我需要 firebase 为任何模型存储具有自动增量 Id 的数据,我该怎么办?

nosql node.js express firebase firebase-realtime-database

2
推荐指数
1
解决办法
1721
查看次数

如何通过 shell 访问 Amazon Keyspaces?

我尝试cqlsh在 AWS shell 中编写,但没有返回任何输出。我参考了这个教程

输出:-bash: cqlsh: command not found

amazon-web-services cassandra nosql wide-column-store amazon-keyspaces

2
推荐指数
1
解决办法
341
查看次数

DynamoDB:是什么导致错误“提供的关键元素与架构不匹配”?

调用 DynamoDB deleteItem API 时,出现The provided key element does not match the schema错误。经过研究,我发现当您没有提供完整的主键(即表有范围键但 API 调用未指定它)时,就会发生此错误。但是,就我而言,该表没有范围键,它只有一个名为 的哈希键pk

这是我的代码:

const dynamodbDocClient = new AWS.DynamoDB.DocumentClient({ logger: console });
socket.on('my-event', async (payload) => {
   await dynamodbDocClient.delete({
      TableName: 'MyTable',
      Key: { pk: payload.id },
    }).promise()
})
Run Code Online (Sandbox Code Playgroud)

有人可以列出可能发生此错误的所有其他情况吗?

amazon-web-services nosql amazon-dynamodb

2
推荐指数
1
解决办法
8052
查看次数

NoSQL (Cassandra/Mongo) 与 RDBMS

您好,我正在从系统设计的角度学习 NoSQL 数据库的功能,并且还了解到许多大公司使用分片 RDBMS 而不是那些 nosql 数据库来保存数据。

这是否表明 NoSQL 数据(Cassandra/MongoDB)的唯一优势是因为它是现成的分布式解决方案并且维护成本低廉?

postgresql distributed-system mongodb cassandra nosql

2
推荐指数
1
解决办法
619
查看次数

如何 $push 聚合中的所有文档而不是特定字段

我在聚合管道的第一阶段使用以下方法得到了这组结果$match

[
  { a: 1, b: 2 },
  { a: 3, b: 4 }
]
Run Code Online (Sandbox Code Playgroud)

现在我想对所有 A 和 B 求和,并且仍然保留它们,因此我将得到如下结果:

{
  total_sum: 10,
  items: [...] // first and second objects ofcourse
}
Run Code Online (Sandbox Code Playgroud)

我尝试过$group$push但是,push 只从对象中推送特定字段,我需要命名 A 和 B,而不是解析所有它们。

我该怎么做?

aggregation mongodb nosql aggregation-framework

2
推荐指数
1
解决办法
2430
查看次数