2017-07-07 19 views
0

私は、各ドキュメントが以下のプロパティを持つドキュメントの集まりを持っています:userIdpermissions条件付き検索クエリ

findOneクエリを使用してuserId = 41permissions = adminまたはpermissions = op-adminのドキュメントを返すにはどうすればよいですか?

User.findOne(
    { 
    'userId': 42 
    }, 
    { 
    $and: [ 
     { 
     $or: {'permissions': 'admin'} 
     }, 
     { 
     $or: {'permissions': 'op-admin'} 
     } 
    ] 
    }, function(err, doc) { 
    if(err) { 
    console.log(doc); 
    console.log(err); 
    } 
}); 

は私が正しくやっていないよ何かあります...私は、次のクエリを試してみたが、それはどんな結果を返していないのですか?

+0

'.find({ "はuserId" 42、 "アクセス許可":{ "$の中に":[ '管理者'、 'OP-管理']}})'。 '$ in'は基本的に' $ or'の短縮形ですが、同じキーに適用されます。また、実際には '$と'を簡潔に使う必要はほとんどありません。ありがとうrobert –

+2

@NeilLunnにも 'userId'が必要です; D – robertklep

+0

@NeilLunnあなたのコードを試してみました。また、' userId'をクエリに追加しました。このコメントを回答として投稿する必要があります – Valip

答えて

0

試み:

User.find({ 
      $and: [ {'userId': 42 } , 
       { $or: [ {'permissions': 'admin'}, {'permissions': 'op-admin'} ] } 
      ]})