MongoDBがコレクションのキーの内容全体を1つの検索キーワードで検索する方法はありますか?私はそれが「チョコレートムースケーキ」を返すと「ダークなければならないという意味、私の検索は、「チョコレート」を含む一致を見てみたいMongoDBコレクション内のすべてのキーを1つのキーワードだけで検索する方法
{
name: "Chocolate Mousse Cake",
type: "Cake"
},
{
name: "Mother's Cookies",
type: "Cookies"
},
{
name: "Dark Bar",
type: "Chocolate"
}
:
は、私は、次のコレクションを(のはfoodCollectionそれを呼びましょう)があるとしバー"。
私はこのFFを使ってやろうとしている:コード:
クライアント側のコントローラ
// Search Products
$scope.searchProduct = function() {
$http.get('/api/products/search/' + $scope.searchKeyword).success(function(data){
console.log(data);
})
.error(function(err) {
console.log("Search error: " + err);
});
}
Express.js
app.get('/api/products/search/:param', productController.search); // Search for product
サーバー
をサイドコントローラは(私はMongoDBのドキュメントから this referenceを使用):私はこれを実行// Search
module.exports.search = function(req, res) {
console.log("node search: " + req.body);
Product.find({ $or: [{productName: req.body},
{productType: req.body}]
}, function(err, results) {
res.json(results);
});
}
とき、私は何も得ませんでした。何か不足していますか?
ご協力いただければ幸いです。ありがとうございました。
UPDATE(FINAL)
は最後にJoydipのと数字のヒントに、このおかげで解決しました。ここでは他のケースの誰かの私の解決策は、私がやったのと同じ問題を取得しますだ:
クライアント側のコントローラ
$scope.searchProduct = function() {
if ($scope.searchKeyword == '') {
loadFromMongoDB(); // reloads original list if keyword is blank
}
else {
$http.get('/api/products/search/' + $scope.searchKeyword).success(function(data){
if (data.length === 0) {
$scope.showNoRec = true; // my flag that triggers "No record found" message in UI
}
else {
$scope.showNoRec = false;
$scope.productList = data; // passes JSON search results to UI
}
});
}
}
Express.js
app.get('/api/products/search/:keyword', productController.search); // Search for product
マングーススキーマは
var mongoose = require('mongoose');
var schema = new mongoose.Schema({
productName: String,
productType: String,
productMaker: String,
productPrice: Number,
createDate: Date,
updateDate: Date
});
schema.index({productName: "text", productType: "text", productMaker: "text"});
サーバー側コントローラ
module.exports.search = function(req, res) {
Product.find({$text: {$search : req.params.keyword}}, function(err, results){
res.json(results);
})
}
は、あなたの助けのためのみんなに感謝します。:)
Btw私は、req.params.param'をあなたの検索値に 'req.body'ではないと思っています。 –
お返事ありがとうございます。うん、それも私の間違いの一つだった。 :)それを修正すると、私の検索機能は完全に機能しました。 –