2016-10-24 11 views
0

find()メソッドで2つの配列を比較したいと思います。私はそれを行うことでしたが、それは動作するようですdoesnの:userOneとuserTwoが存在する場合、それは何も返さdoes notのMongoDbではfind()メソッドで2つの配列を比較する方法は?

var userOne = group.users[0]; 
var userTwo = group.users[1]; 

const selector = { 
    $and: [{ 
     $or: [{ 
      'users[0]': userOne 
     }, { 
      'users[0]': userTwo 
     }] 
    }, { 
     $or: [{ 
      'users[1]': userOne 
     }, { 
      'users[1]': userTwo 
     }] 
    }, { 
     type: 0 
    }] 
}; 
var exists = Groups.find(selector).fetch(); 
console.log(exists); 

、それらのいずれかが定義されていないとき、それはすべてのコレクションを返します。

誰かが私を助けることができますか?

注:コレクションの THSスキーマは次のとおりです。

GroupsSchema = new SimpleSchema({ 
    name: { 
     type: String, 
     optional: true 
    }, 
    description: { 
     type: String, 
     optional:true 
    }, 
    type: { 
     type: Number 
    }, 
    users: { 
     type: [String], 
     optional: true 
    } }); 
+0

ここにスキーマを掲載してください。 –

+0

GroupsSchema =新しいSimpleSchema({ 名:{ タイプ:文字列、 オプション:真、 }、 説明:{ タイプ:文字列、 オプション:真 }、 タイプ:{ タイプ:Number } 、 ユーザー:{ タイプ:[String]、 オプション:true } }); –

答えて

1

ここ$or演算子を使用する必要はありません。あなたは(参照のためthis SO questionを参照)、このような何かを試みることができる:

const selector = { 
    $and: [{ 
      'users': userOne 
      }, 
      { 
      'users': userTwo 
      }, 
      { 
       type: 0 
      }] 
    }; 

また、それらが正しいことを確認するために、データベース内の値を確認してください。