繁体   English   中英

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

[英]MongoDB Query with multiple conditions and slice

我有这个猫鼬查询:

 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);
      }
  }

我想直接在数据库中切片,而不是在检索对象之后。 猫鼬无法做到这一点,或者它没有记录在案,或者我找不到文件。

因此,我通过使用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引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM