使用しているフィールド名の一覧

1,491 views
Skip to first unread message

Nishimura Ryuichiro

unread,
Sep 8, 2014, 4:47:02 PM9/8/14
to mongo...@googlegroups.com
お世話になります。

コレクションを作成して、ほぼ定型のドキュメントを登録します。

登録したドキュメントに記述しているフィールド名を一覧情報と
して取得したいのですが、mongo の機能として、そのようなコマ
ンドとかってあるんでしょうか。

または、メタデータ的なものを管理するコレクションか何かがあっ
て、それを参照すれば、一覧が見れるとか。

何か情報があれば、お願いします。


西村

Tetsutaro Watanabe

unread,
Sep 9, 2014, 9:16:35 AM9/9/14
to mongo...@googlegroups.com

渡部です。

それはないと思います。

MongoDBはインデックスを貼っていなければ、どんなキーがあるかはjsonの中身を見るまでわかりません。

--
このメールは Google グループのグループ「MongoDB JP」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには mongodb-jp+...@googlegroups.com にメールを送信してください。
このグループに投稿するには mongo...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/mongodb-jp からこのグループにアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

Shoken Fujisaki

unread,
Sep 9, 2014, 10:13:43 AM9/9/14
to mongo...@googlegroups.com
藤崎です。
2.4のころに一度探しましたが、少なくともその当時はありませんでした。今も機能的には無いと思います。

ユニークなフィールド名を管理しているメタデータは無さそうです。なので、このように全部のドキュメントをなめることになると思います。
http://stackoverflow.com/questions/2298870/mongodb-get-names-of-all-keys-in-collection


mr = db.runCommand({
"mapreduce" : "my_collection”,
"map" : function() {
for (var key in this) { emit(key, null); }
},
"reduce" : function(key, stuff) {
return null;
},
"out": "my_collection" + "_keys”
})


==
藤崎祥見

On Tuesday, September 9, 2014 at 10:16 PM, Tetsutaro Watanabe wrote:

> 渡部です。
> それはないと思います。
> MongoDBはインデックスを貼っていなければ、どんなキーがあるかはjsonの中身を見るまでわかりません。
> お世話になります。
>
> コレクションを作成して、ほぼ定型のドキュメントを登録します。
>
> 登録したドキュメントに記述しているフィールド名を一覧情報と
> して取得したいのですが、mongo の機能として、そのようなコマ
> ンドとかってあるんでしょうか。
>
> または、メタデータ的なものを管理するコレクションか何かがあっ
> て、それを参照すれば、一覧が見れるとか。
>
> 何か情報があれば、お願いします。
>
>
> 西村
>
> --
> このメールは Google グループのグループ「MongoDB JP」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには mongodb-jp+...@googlegroups.com (mailto:mongodb-jp+...@googlegroups.com) にメールを送信してください。
> このグループに投稿するには mongo...@googlegroups.com (mailto:mongo...@googlegroups.com) にメールを送信してください。
> http://groups.google.com/group/mongodb-jp からこのグループにアクセスしてください。
> その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。
> --
> このメールは Google グループのグループ「MongoDB JP」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには mongodb-jp+...@googlegroups.com (mailto:mongodb-jp+...@googlegroups.com) にメールを送信してください。
> このグループに投稿するには mongo...@googlegroups.com (mailto:mongo...@googlegroups.com) にメールを送信してください。

Hiroaki Kubota

unread,
Sep 9, 2014, 10:19:53 AM9/9/14
to mongo...@googlegroups.com
窪田です。

ドキュメントベースのDBにはフィールド名の様なメタデータはありません。
逆に無いからこそ自由にデータを投入することができるのです。



2014年9月9日 23:13 Shoken Fujisaki <syo...@gmail.com>:
このメールは Google グループのグループ「MongoDB JP」の登録者に送られています。
このグループから退会し、グループからのメールの配信を停止するには mongodb-jp+...@googlegroups.com にメールを送信してください。
このグループに投稿するには、mongo...@googlegroups.com にメールを送信してください。

Nishimura Ryuichiro

unread,
Sep 9, 2014, 4:59:22 PM9/9/14
to mongo...@googlegroups.com
渡部さん
藤崎さん
窪田さん

返信ありがとうございます。
やっぱり、ないですよね。

フィールド名として使おうと思っていたものをデータとして
持って、それでデータ種類等確認するようにします。

西村




2014年9月9日火曜日 5時47分02秒 UTC+9 Nishimura Ryuichiro:

Hana Tanaka

unread,
Sep 9, 2014, 9:06:13 PM9/9/14
to mongo...@googlegroups.com
MongoDBドキュメントの内容を出力するjavascriptを作成しました。
Rubyなどの言語で作成すれば全ドキュメントの差分情報を取得するツールを簡単に作成可能と考えます。
ご参考まで。。。。

=============================================================

var NUM_INDENT = 0;
var STR_INDENT = "  ";
function add_indent( num_add ) {
        NUM_INDENT += num_add;
        var str = "";
        for (var num=0; num<NUM_INDENT; num++) {
                str += STR_INDENT;
        }
        return( str );
}

function print_mongo( obj ) {
        for (var key in obj){
                var str_type = Object.prototype.toString.call(obj[key]);
                if ((str_type == "[object ObjectId]") ||
                    (str_type == "[object String]")   ||
                    (str_type == "[object Number]")   ||
                    (str_type == "[object Boolean]")  ||
                    (str_type == "[object Date]")     ||
                    (str_type == "[object Null]")) {
                        print( add_indent(0), key, "=", obj[key], str_type );
                } else if ((str_type == "[object Array]") ||
                           (str_type == "[object Object]")) {
                        print( add_indent(0), key, str_type );
                        add_indent(1);
                        print_mongo(obj[key]);
                        add_indent(-1);
                } else {
                        // undefined
                        print( add_indent(0), "undefined", key, "=", obj[key], str_type );
                }
        }
        return;
}

// execute
print_mongo( db.my_collection.findOne() );

=============================================================

from 田中(はじめて投稿しました。)

Ryuichiro Nishimura

unread,
Nov 26, 2014, 2:53:55 PM11/26/14
to mongo...@googlegroups.com
田中さま

今頃になって恐縮です。
スクリプトありがとうございます。
自分で作るより仕方ないので、大いに参考にさせていただきます。


2014年9月10日水曜日 10時06分13秒 UTC+9 Hana Tanaka:
Reply all
Reply to author
Forward
0 new messages