1

NEDBfind()クエリ構造の使用に問題があります。

以下のfind()クエリは、すべての新しいメッセージを返す必要があります: 指定されたemailまたはAllグループに送信され、指定されたによって読み取られたり送信されたりしていませんemail

ただし、誤検知が返されます。たとえば、フラット ファイル (以下) の 2 つの項目は、プロパティの配列のemail ISが評価されているにもかかわらず、結果として返されます。オペレーターを使用して$ninいますが、何が間違っているのかわかりませんか? すべての提案を歓迎します:)

var email = 'anotheraddress@gmail.com';
var message_query = [];
    message_query.push({$and: [{to: 'All'}, {'data.readBy': {$nin: [email]}}]});
    message_query.push({$and: [{to: email}, {'data.read': {$exists: false}}]});

    message
        .find({
            $and: [
                {$not: {from: email}},
                {$or: message_query}
            ]
        })
        .exec(function (err, results) {

        });

フラット ファイルがどのように見えるかのスニペットを次に示します。これらの 2 つは返されるべきではありませんが、:/

...

{ 
  to: 'All',
  toname: 'Some Name',
  from: 'someaddress@gmail.com',
  fromname: 'Some other Name',
  message: 'A message for all...',
  timestamp: 1502473320,
  imtype: 'msg',
  _id: 'K66iP3dZHbYTfGgK',
  data:
   { readBy:
      [ 'someotheraddress@gmail.com',
        'anotheraddress@gmail.com' ] } 
},
{ 
  to: 'All',
  toname: 'Some Name',
  from: 'someoneelse@gmail.com',
  fromname: 'Some other Name',
  message: 'A message for all...',
  timestamp: 1502473420,
  imtype: 'msg',
  _id: 'K66iP3dZNyNxfGgK',
  data:
   { readBy:
      [ 'someotheraddress@gmail.com',
        'anotheraddress@gmail.com' ] } 
}

...

前もって感謝します

4

1 に答える 1