3

私たちが持っていると仮定しましょう

post1.tags = [ '1', '2', '3' ];

post2.tags = [ '2', '4', '5' ];

post3.tags = [ '1', '3', '4' ];

post4.tags = [ '1', '3', '4', '5', '6' ];

指定されたタグ [「1」、「3」、「5」] を 2 つ以上含む投稿を見つけようとしています。結果は、post1、post3、および post4 になります。これを達成するためにmongodbクエリをどのように書くことができますか?

4

2 に答える 2

-1

シェルからこれを行いたい場合は、javascript を使用できます。次のコードで javascropt ファイルを作成します。

use test;

var initialArray = [1, 2, 3];

for (i = 0; i < initialArray.length; i++) {
    for(j = initialArray.length-1; j>=i; j--) {
        if(i!=j) {
            var matchingArray = [initialArray[i].toString(), initialArray[j].toString()];
            print("\nResults using array: " + matchingArray);

            var result = db.posts.find({tags: {$all: matchingArray}});

            while(result.hasNext()){
                printjson(result.next());
            }
        }
    }
}

そして、コマンドを実行します

C:\> mongo < query.js

注: 最適化して独自の結果を得ることができます。

于 2013-07-01T16:44:43.723 に答える