代码之家  ›  专栏  ›  技术社区  ›  Terry Wei

google.cloud.datastore.v1中的关键是什么?

  •  0
  • Terry Wei  · 技术社区  · 8 年前

    这是我的代码基础 Google.Cloud.Datastore.V1

    public long InsertMessage<T>(T iEntity) where T : IEntity<T>
    {
        var keyFactory = _db.CreateKeyFactory(Kind);
        var entity = iEntity.ToEntity();
        entity.Key = keyFactory.CreateIncompleteKey();
    
        using (var transaction = _db.BeginTransaction())
        {
            transaction.Insert(entity);
            var commitResponse = transaction.Commit();
            var insertedKey = commitResponse.MutationResults[0].Key;
            Logger.Info($"Inserted key: {insertedKey}");
            return insertedKey.Path[0].Id;
        }
    }
    

    我所要做的就是创建一个实体并创建一个不完整的密钥,发送到服务器,然后从服务器获取填充的密钥。

    钥匙 到实体。

    我可以通过以下查询获得实体:

    var query = new Query(Kind)
    {
        Filter = Filter.Equal("key", key),
        Order = { { "created", PropertyOrder.Types.Direction.Ascending } }
    };
    foreach (var entity in _db.RunQueryLazily(query))
    {
        list.Add(entity);
    }
    

    Filter.Equal("key", key)

    示例显示 是:

    {
        "partitionId":
        {
            "projectId": "projectId",
            "namespaceId": "namespaceId"
        },
        "path": [
        {
            "kind": "kind",
            "id": "id"
        }]
    }
    

    1. 是什么
    2. 什么是键的路径,为什么是数组?
    3. id 实体的唯一键?
    4. 如何 Query 通过 Key Id 是吗?

    谢谢你的阅读,请不要介意我的英语差。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Jon Skeet    8 年前

    键是文档的唯一标识符。这个 documentation

    钥匙

    • 命名空间
    • 这个 对其进行分类以进行云数据存储查询的实体。
    • 标识符
      • 密钥名称
      • 整数
    • 可选 在云数据存储层次结构中定位实体的可选祖先路径

    Path path elements ,每个都由一个类和“integer id”或“string name”部分组成。

    • kind=shelf;id=1(数字id)

    另一种思考方法是将收集和文档名交替排列,例如“/sheets/1/books/xyz”。就是这样 Firestore

    任何一个路径元素都不必是唯一的,但完整的路径是唯一的。没有按“键和ID”查询的真正概念-您可以查找完整的键(例如 DatastoreDb.Lookup