gpt4 book ai didi

javascript - 具有多个条件和切片的 MongoDB 查询

转载 作者:行者123 更新时间:2023-11-28 19:21:08 25 4
gpt4 key购买 nike

我有这个 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 无法执行此操作,或者没有文档记录,或者我没有找到文档。

因此,我使用 collection 关键字回退到 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

最佳答案

投影是单个对象定义。此外,您还可以“查询”事物,而不是要求投影中除匹配条件的特定字段之外的匹配项。 $slice是一种特殊情况,默认情况下不排除投影中的其他字段:

Domain.collection.find(
{ "domain":req.params.domain, "date": date },
{ "visitors": { "$slice":100 } },
function(err,domain){
// process results here
}
);

可能还要注意,这里的 $slice (就像 JavaScript 一样)是定义的“条目数”,而不是数组中的 n-1 引用索引。

关于javascript - 具有多个条件和切片的 MongoDB 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28899524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com