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' ] }
}
...
前もって感謝します