MongoDB からタプルを変換するにはどうすればよいですか
{'_id',<<"vasya">>,password,<<"12ghd">>,age,undefined}
提案する
[{'_id',<<"vasya">>},{password,<<"12ghd">>},{age,undefined}]
MongoDB からタプルを変換するにはどうすればよいですか
{'_id',<<"vasya">>,password,<<"12ghd">>,age,undefined}
提案する
[{'_id',<<"vasya">>},{password,<<"12ghd">>},{age,undefined}]
タプルの 2 つの連続する要素を基本的に結合したいと仮定すると、これはそれほど難しくありません。element\2
タプルから要素をプルするために使用できます。そしてtuple_size\1
、タプルのサイズを取得します。これを処理するには、次の 2 つの方法があります。
1> Tup = {'_id',<<"vasya">>,password,<<"12ghd">>,age,undefined}.
{'_id',<<"vasya">>,password,<<"12ghd">>,age,undefined}
2> Size = tuple_size(Tup).
6
これにはリスト内包表記を使用できます。
3> [{element(X, Tup), element(X+1, Tup)} || X <- lists:seq(1, Size, 2)].
[{'_id',<<"vasya">>},{password,<<"12ghd">>},{age,undefined}]
または、圧縮することもできます:
4> lists:zip([element(X, Tup) || X <- lists:seq(1, Size, 2)], [element(X, Tup) || X <- lists:seq(2, Size, 2)]).
[{'_id',<<"vasya">>},{password,<<"12ghd">>},{age,undefined}]
要素の引き出しを処理する関数を作成することで、そのジッパーをクリーンアップできます。
slice(Tuple, Start, Stop, Step) ->
[element(N, Tuple) || N <- lists:seq(Start, Stop, Step)].
次に、この関数を呼び出します。
5> lists:zip(slice(Tup, 1, Size, 2), Slice(Tup, 2, Size, 2)).
[{'_id',<<"vasya">>},{password,<<"12ghd">>},{age,undefined}]
You can use bson:fields/1 (https://github.com/mongodb/bson-erlang/blob/master/src/bson.erl#L52). bson is the dependency of mongodb erlang driver