MongoDB 多条件多切片查询
MongoDB Query with multiple conditions and slice
我有这个 Mongoose 查询:
return Domain.find({domain:req.params.domain})
.where('date').equals(date)
.exec(function (err, domain) {
if (!err) {
if (!isEmpty(domain[0].visitors)) {
domain[0]['visitors'] = domain[0].visitors.slice(0,99);
}
}
我想直接在数据库中切片,而不是在检索对象之后。 Mongoose 无法执行此操作,或者没有记录,或者我没有找到文档。
所以我使用集合关键字回退到 node.js 本机 MongoDB 驱动程序。
我的代码现在看起来如下但失败了:
return Domain.collection.find(
{ "domain":req.params.domain },
{ "date":date },
{ "visitors": { $slice:100 } },
function(err,domain){
if (!err) {
res.status(200).send({
domain:domain
});
}
完整代码:https://gist.github.com/nottinhill/b3837d4c913b9e5dd879
我尝试在 MongoDB 控制台中构建一个可以工作的查询,但无法使这个简单的查询工作。 MongoDB 文档没有说明如何使用两个条件进行查询。我想:
我想要的伪代码:
find
giveBack wholeDomainObject
where domain == domain
where date == date
also slice visitorsArray
投影是单个对象定义。此外,你 "query" 的东西,而不是在特定字段匹配标准以外的投影中要求匹配。 $slice
是特例,默认不排除投影中的其他字段:
Domain.collection.find(
{ "domain":req.params.domain, "date": date },
{ "visitors": { "$slice":100 } },
function(err,domain){
// process results here
}
);
可能还要注意这里的 $slice
(就像 JavaScript 一样)是定义的 "number of entries" 而不是数组索引中的 n-1
引用。
我有这个 Mongoose 查询:
return Domain.find({domain:req.params.domain})
.where('date').equals(date)
.exec(function (err, domain) {
if (!err) {
if (!isEmpty(domain[0].visitors)) {
domain[0]['visitors'] = domain[0].visitors.slice(0,99);
}
}
我想直接在数据库中切片,而不是在检索对象之后。 Mongoose 无法执行此操作,或者没有记录,或者我没有找到文档。
所以我使用集合关键字回退到 node.js 本机 MongoDB 驱动程序。
我的代码现在看起来如下但失败了:
return Domain.collection.find(
{ "domain":req.params.domain },
{ "date":date },
{ "visitors": { $slice:100 } },
function(err,domain){
if (!err) {
res.status(200).send({
domain:domain
});
}
完整代码:https://gist.github.com/nottinhill/b3837d4c913b9e5dd879
我尝试在 MongoDB 控制台中构建一个可以工作的查询,但无法使这个简单的查询工作。 MongoDB 文档没有说明如何使用两个条件进行查询。我想:
我想要的伪代码:
find
giveBack wholeDomainObject
where domain == domain
where date == date
also slice visitorsArray
投影是单个对象定义。此外,你 "query" 的东西,而不是在特定字段匹配标准以外的投影中要求匹配。 $slice
是特例,默认不排除投影中的其他字段:
Domain.collection.find(
{ "domain":req.params.domain, "date": date },
{ "visitors": { "$slice":100 } },
function(err,domain){
// process results here
}
);
可能还要注意这里的 $slice
(就像 JavaScript 一样)是定义的 "number of entries" 而不是数组索引中的 n-1
引用。