soru başlık aşağıdaki ulaşmak için çalışır sorgu yapmaya çalışıyor benim şimdiki yaklaşımı özetlemektedir olarak boş bir dize ile $ metin arama çalışması:mongodb tek bir Doları maddesi veya
"tüm belgeleri bulun boş bir dize kullanıcı tarafından gönderilirse
var query = {
$or: [
{ $text: { $search: searchText } },
],
$and: [
{createdon: { $gte: start_date, $lt: end_date} },
{author: req.user._id}
]
};
sorgusu herhangi döndürmez: o
Benim sorgu altındadır diğer özellikleri" bir demet metin arama ölçütleriyle eşleşen YA yok vE yerine getirmek sonuçta koleksiyonda belgelerin bulunmasına rağmen Kullanıcı tarafından istekte gönderilen kriterler VE yan tümcesi.
Temel olarak, kafamı MongoDB'nin boş bir dizeyle çalışacak $ metin aramasını nasıl alacağımı çiziyorum.
ben sadece bu yüzden gibi sorgu oluşturmadan önce bir şeyler metin biliyorum: i koşullu kontrol akışı içindeki sorgu nesnesi oluşturmak zorunda kalmadan bu istenen işlevselliği sağlayabilirseniz
var query;
if (!searchText.length) {
//We know there's no search text, so just use the conditions in the AND clause
query = {
createdon: { $gte: start_date, $lt: end_date},
author: req.user._id
};
Sadece merak. Gelecekteki okuyucular için
MongoDB, boşlukları tam metnin bir parçası olarak dizine kopyalamıyor – Saleem
@Saleem Dokümanlara baktıktan sonra, $ veya koşulun sözdizimi veya bununla ilgili bir şeyle yanlış bir şey yapıp yapmadığımı merak ediyorum. satırları .. Sorgunun koşullu bildiriminin gitmenin yolu olduğunu söyleyebilir misiniz? –
İkinci yaklaşımınız en iyi yoldur. MongoDB'yi hiçbir şey için çalışmasını engeller :) – Saleem