[英]how to search for values in two different collections in mongodb using nodejs
[英]Search in whole collection(mongodb) using nodejs
我想使用Nodejs在Mongodb集合中實現整個搜索功能。 我應該將什么傳遞給SaleModel.find()
以便在整個集合中進行給定值搜索?
這是我嘗試的方法,但是它僅搜索product_name,我也想搜索sale_amount,sale_person,department_name。
我該怎么做?
SaleModel.find({'product_name': 'searched value'});
架構:
var saleSchema = mongoose.Schema({
product_name:{ type:String, required:true},
sale_amount:{ type:Number, required:true },
sale_date:{ type:Date, default:Date() },
sale_person:{ type:String, required:true },
department:{ type:mongoose.Schema.Types.ObjectId, ref:'department' },
});
module.exports = mongoose.model('sale', saleSchema);
我會寫得更干凈一些,下面的示例使用async.parallel
, Promise和Mongoose.Query
function list(req) {
// promise or callback works as well
return new Promise(function(resolve, reject){
// npm install async --save
var async = require('async');
// some validation can be applied
var page = {
skip: req.query.start || 1,
limit: req.query.length || 25,
text: req.query.search || '' // <== this is new property!
};
// reuse Mongoose.Query with search by regex
var Query = Models.SaleModel.find({
product_name: new RegExp(page.text, "i")
});
// run without waiting until the previous function has completed
async.parallel([
function(){
Query.count(callback); // <== count
},
function(){
Query.skip(page.skip).limit(page.limit).exec('find', callback); // <== items
// or the below one should also work, just don't remember
// Query.skip(page.skip).limit(page.limit).exec(callback);
}
]), function(err, results){
if(err){
reject(err);
} else {
resolve({
count: results[0],
data: results[1]
});
}
});
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.