0

私はmongodbコレクション「mongocollection」を持っています。コレクション内の各ドキュメントは2つの列で構成されています。最初はコレクションのIDである文字列「cid」で、2番目はjson配列です。

元:

{ "_id" : "domain.com", "
className" : "UserAgents", 
"userAgents" : [                
"Mozilla/5.0 (Windows; U; Windows NT 6.0; en-CA; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5",
"Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6 (.NET CLR 3.5.30729)",
"Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.2) Gecko/20090803 Firefox/3.5.2 Slackware",
"Mozilla/5.0 (X11; U; Linux x86_64) Gecko/2008072820 Firefox/3.0.1"
        ]
}

mongo コマンドラインから、コレクション内の特定のドキュメントの内容を次のように取得できます。

db.CorruptUserAgents.find({"_id":"domain.com"}).pretty();

特定のドキュメントの特定の配列の要素数を取得するにはどうすればよいですか。元

SOMETHING.count();
100

コマンドラインでこれを行うことは可能ですか? ドキュメントを取得し、配列を反復処理して要素をカウントできることはわかっていますが、コマンドラインからこれを実行したいと考えています。

4

2 に答える 2

2

.findOne()で検索しているため、代わりにを使用できます_id。単一のドキュメントが返されます。

したがって、次のようなことを簡単に行うことができます。

var document = db.CorruptUserAgents.findOne({"_id":"domain.com"});
var count = document.userAgents.length;
于 2013-02-13T05:57:38.297 に答える
1

以下を使用して直接取得できます。

db.CorruptUserAgents.findOne({"_id":"domain.com"}).userAgents.length;
于 2016-06-21T11:28:18.573 に答える