modelThreader.find({
$and: [
{"date_entered": { $lt: fromTime }},
{"cancelled": { $ne: true }},
{"hideFromUserIds.id": { $ne: current_user_id }},
{"banned": false},
{$and: [
{"user_id": { $ne: current_user_id }},
{"privacy": { $ne: 1 }}
]}
]
}).exec(function(err, docs){
// handle response.
});
Moğolla ilgili basit bir sorguda sorun yaşıyorum.
i ilk yeri her ihtiyaç yukarıdaki sorgu olarak sorgu ie ayarlanır: Bu iyi çalışır
{"date_entered": { $lt: fromTime }},
{"cancelled": { $ne: true }},
{"hideFromUserIds.id": { $ne: current_user_id }},
{"banned": false},
, beklendiği gibi. Ancak, doc şeması değiştikçe bu sorguya eklemem gerekiyor.
Int1'in özel olduğu ve yalnızca kullanıcıya herkese gönderilmesi gereken yeni bir alan "gizlilik" var. Benim sorgudan görebileceğiniz gibi current_user_id sorgusu talebinde biriyse ben aksi takdirde sadece gizlilik içeren sonuçları getirir, herhangi bir gizlilik filtresi geçerli değildir,
{$and: [
{"user_id": { $ne: current_user_id }},
{"privacy": { $ne: 1 }}
]}
yani söylemeye çalışıyorum 1 değil. current_user_id dahil tüm kullanıcılara 1 ...
DÜZENLEME tek yolu i istenen sonuç dev $ yapmaktır veya elde edebilirsiniz ama bu verimsiz hissediyor:
sorun $ ne uygulayarak olmasıdır :
Burada veyada
modelThreader.find({
"date_entered": { "$lt": fromTime },
"cancelled": { "$ne": true },
"banned": false,
"$or": [
{ "user_id": current_user_id },
{
"user_id": { "$ne": current_user_id },
"hideFromUserIds.id": { "$ne": current_user_id },
"privacy": { "$ne": 1 }
]
})
: Diğer user_id en
$or: [
{$and: [
//other people, respecting privacy
{$or: or},
{"date_entered": { $lt: fromTime }},
{"cancelled": { $ne: true }},
{"hideFromUserIds.id": { $ne: current_user_id }},
{"banned": false},
{"user_id": { $ne: current_user_id }},
{"privacy": { $ne: 1 }}
]},
{$and: [
//this user, not looking at privacy
{"date_entered": { $lt: fromTime }},
{"cancelled": { $ne: true }},
{"hideFromUserIds.id": { $ne: current_user_id }},
{"banned": false},
{"user_id": current_user_id }
]}
]})