首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多条件多片MongoDB查询

多条件多片MongoDB查询
EN

Stack Overflow用户
提问于 2015-03-06 13:12:26
回答 1查看 2.1K关注 0票数 1

我有一个关于猫鼬的问题:

代码语言:javascript
复制
 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);
      }
  }

我想直接在数据库中切片,而不是在检索对象之后。猫鼬不能这样做,或者它没有被记录,或者我没有找到文档。

因此,通过使用node.js关键字,我回到了MongoDB本机驱动程序。

我的代码现在看起来如下,但是失败了:

代码语言:javascript
复制
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文档不显示如何使用两个条件进行查询。我想:

我想要的伪代码

代码语言:javascript
复制
find
   giveBack wholeDomainObject
   where domain == domain
   where date == date
   also slice visitorsArray
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-06 13:22:35

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

代码语言:javascript
复制
Domain.collection.find(
  { "domain":req.params.domain, "date": date }, 
  { "visitors": { "$slice":100 } }, 
  function(err,domain){
     // process results here
  }
);

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28899524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档