2

ユーザーがjsonコードを記述し、そのjsonコードをIDとコレクションに保存できるアプリケーションを作成しています。つまり、ID、コレクション (文字列; [a-zA-Z0-9])、およびデータ (json、有効な json であれば何でもかまいません) を指定します。

ドキュメントデータベースが完璧だと思っていたので、これまで RavenDb を使用してきましたが、クエリに問題がありました。

保存してクエリを実行する必要があるオブジェクトの 1 つは、次のとおりです。

{
    "network": "some_network",
    "names": ["name1","name2"],
    "data": {"values":[],"keys":[]}
}

このオブジェクトは、指定された、または自動生成された (指定されている場合) ID null、およびコレクション (常に指定する必要があります) とともに保存する必要があります。次に、コレクション、ネットワーク、および単一の名前。

たとえば、コードがquery('users', '{"network":"some_network","names":"name1"}')あり、このオブジェクト (およびそれに一致する他のオブジェクト) を返すにはそのコードが必要です。

また、データベースを変更しても問題ありませんが、データベースはインプロセス (セルフホスト) で実行できる必要があり、インストールせずに管理者権限なしで実行できる必要があります (つまり、バインドできません)。 wcf のようにホスト名/IP に)。

どうすればこのようなことを達成できますか?

4

1 に答える 1

4

私はこれに対する答えを見つけました:

    public string Query(string dynIndexName, string query)
    {
        using (var session = store.OpenSession())
        {
            var q = new IndexQuery();
            q.Query = query;
            var result = session.Advanced.DatabaseCommands.Query("dynamic/" + dynIndexName, q, new string[0]);
            return "[" + String.Join(",", result.Results.Select(r => r.ToString())) + "]";
        }
    }

Query-methodを呼び出す前に、json-query-objectを次のようなLucene-queryに変換し、(network:"some_network" AND names:"name1")それをデータベースへのquery-parameterとして使用します。保存と取得のクラス全体は、https ://github.com/Alxandr/RunJS/blob/master/src/AddIns/Storage/StorageMbro.csにあります。

于 2011-10-06T06:38:07.660 に答える