小编Ash*_*shh的帖子

查找数组中的最大元素

REF:来自具有字段值 max 的数组的 MongoDB 文档

查找文档中的子数组中的最高值MongoDB查找文档数组中的最大值中的答案建议使用排序+限制(1),但这确实很慢。当然有一种方法可以使用 $max 运算符。

假设在聚合匹配中获得这样的文档:

{
  _id: "notImportant",
  array: [
    {
      name: "Peter",
      age: 17
    },
    {
      name: "Carl",
      age: 21
    },
    {
      name: "Ben",
      age: 15
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

您想要找到年龄最高的(整个,而不仅仅是一个值)文档。如何使用 $max 运算符做到这一点?

我试过

unwind {"$array"}
project {"_id": 0, "name": "$array.name", "age": "$array.age"}
Run Code Online (Sandbox Code Playgroud)

所以我得到

{
  _id: null,
  name: "Peter",
  age: 17
}
{
  _id: null,
  name: "Carl",
  age: 21
}
{
  _id: null,
  name: "Ben",
  age: 15
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试匹配年龄:

age: {$eq: {$max: …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework

12
推荐指数
3
解决办法
1万
查看次数

在mongodb聚合管道中将毫秒转换为日期为group by?

我必须在mongodb聚合pipiline中将毫秒转换为日期格式 -

我的疑问是 -

db.campaign_wallet.aggregate({"$match" : {"campaignId" : 1, "txnTime" : { "$gte" : 1429554600000, "$lte" : 1430159400000}}}, {"$group" : {"_id" : {"msisdn" : "$msisdn", "txnTime" : "$txnTime"}, "count" : {"$sum": 1}}});
Run Code Online (Sandbox Code Playgroud)

在此查询中如何将txnTime(以毫秒为单位)转换为管道中的日期?

mongodb mongodb-query aggregation-framework

11
推荐指数
1
解决办法
8918
查看次数

使用mongoose添加不在模式中的字段

我正在尝试向文档添加新字段,但这不起作用:

创建我的UserModel原型:

model = require("../models/user")
UserModel.prototype.findOneAndUpdate = function(query, params, cb) {
   model.findOneAndUpdate(query, params, { returnNewDocument: true, new: true }, function(err, data) {
      if (!err) {
         cb(false, data);
      } else {
         cb(err, false);
      }
   });
};
Run Code Online (Sandbox Code Playgroud)

然后调用它

userFunc = require("../../model_functions/user")

userFunc.findOneAndUpdate({
                  "email.value": userEmail
            }, {
                  $set: {"wat":"tf"}
            },
            function (err, updatedUser) {
                  //This logs the updated user just fine, but the new field 
                  is missing
                  console.log(updatedUser);

                  ...
            }
      );
Run Code Online (Sandbox Code Playgroud)

这会成功更新任何字段,只要它存在,但不会添加任何新字段.

javascript mongoose mongodb node.js

10
推荐指数
2
解决办法
6641
查看次数

在猫鼬中创建索引

一小时后如何从我的 mongo 数据库中删除项目?

我见过

db.Item.createIndex({ "createdAt": 1 }, { expireAfterSeconds: 3600 })
Run Code Online (Sandbox Code Playgroud)

抛出,但我如何在 nodejs 中实现它?

我的数据库条目看起来像这样

{
"_id": {
    "$oid": "5b4b64bc8c6e8add083431a3"
},
"location": {
    "lat": 59.924209956924315,
    "lng": 10.70636168616943
},
"name": "Richard Middleton",
"address": "Espresso House",
"message": "sdsd",
"createdAt": {
    "$date": "2018-07-15T15:14:04.573Z"
},
"updatedAt": {
    "$date": "2018-07-15T15:14:04.573Z"
},
Run Code Online (Sandbox Code Playgroud)

我尝试在我的 db.Item.find() 之前为我的 get 请求运行它,但没有运气。

mongoose mongodb node.js

9
推荐指数
3
解决办法
2万
查看次数

如何在 MongoDB 中进行嵌套的 $lookup 搜索?

我有 3 个集合:

  1. 职位:
+-----------------+----------------------+------- ----------------+
| position_id | company_id | 职位名称 |
+-----------------+----------------------+------- ----------------+
| 1 | 1 | 位置 1 |
+-----------------+----------------------+------- ----------------+
| 2 | 2 | 位置 2 |
+-----------------+----------------------+------- ----------------+
  1. 公司:
+-----------------+----------------------+------- ----------------+
| company_id | 行业_id | 公司名称 |
+-----------------+----------------------+------- ----------------+
| 1 | 1 | 公司 1 |
+-----------------+----------------------+------- ----------------+
| 2 | 2 | 公司 2 |
+------------------------------------------------- ----------------+
  1. 行业:
+-----------------+----------------------+
| 行业_id | 行业名称 |
+-----------------+----------------------+
| 1 | 行业1 | …

mongodb mongodb-query aggregation-framework

9
推荐指数
1
解决办法
6137
查看次数

$查找多个级别没有$ unwind?

我有以下收藏

场地集合

{
    "_id" : ObjectId("5acdb8f65ea63a27c1facf86"),
    "name" : "ASA College - Manhattan Campus",
    "addedBy" : ObjectId("5ac8ba3582c2345af70d4658"),
    "reviews" : [ 
        ObjectId("5acdb8f65ea63a27c1facf8b"), 
        ObjectId("5ad8288ccdd9241781dce698")
    ]
}
Run Code Online (Sandbox Code Playgroud)

评论集合

{
    "_id" : ObjectId("5acdb8f65ea63a27c1facf8b"),
    "createdAt" : ISODate("2018-04-07T12:31:49.503Z"),
    "venue" : ObjectId("5acdb8f65ea63a27c1facf86"),
    "author" : ObjectId("5ac8ba3582c2345af70d4658"),
    "content" : "nice place",
    "comments" : [ 
        ObjectId("5ad87113882d445c5cbc92c8")
    ],
}
Run Code Online (Sandbox Code Playgroud)

评论收集

{
    "_id" : ObjectId("5ad87113882d445c5cbc92c8"),
    "author" : ObjectId("5ac8ba3582c2345af70d4658"),
    "comment" : "dcfdsfdcfdsfdcfdsfdcfdsfdcfdsfdcfdsfdcfdsfdcfdsf",
    "review" : ObjectId("5acdb8f65ea63a27c1facf8b"),
    "__v" : 0
}
Run Code Online (Sandbox Code Playgroud)

作者集合

{
    "_id" : ObjectId("5ac8ba3582c2345af70d4658"),
    "firstName" : "Bruce",
    "lastName" : "Wayne",
    "email" : "bruce@linkites.com",
    "followers" …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js mongodb-query aggregation-framework

8
推荐指数
1
解决办法
2716
查看次数

InsertMany 在 mongodb 中不起作用

我对 Mongoose 和 MongoDB 本身相当陌生,我试图保存一堆通过 insertMany 方法插入的文档,但它没有保存文档。

这是我的代码:

模型:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;


var hostSchema = new Schema({
    hostname: String,
    timestamp: Number,

});

var hostModel = mongoose.model('host', hostSchema, 'host');

module.exports = hostModel;
Run Code Online (Sandbox Code Playgroud)

ExpressJS 邮政路线

var mongoose = require('mongoose');
var hostModel = require('../../models/Host');

router.post('/host', function (req, res, next) {
    var payload = req.body;

    (async function(){
        var host = new hostModel();

        const insertMany = await hostModel.insertMany(payload.data);

        console.log(JSON.stringify(insertMany,'','\t'));

        const saveMany = await hostModel.save();

        res.status(200).send('Ok');
    })();
});
Run Code Online (Sandbox Code Playgroud)

console.log向我显示了记录,但是当我这样做时, …

mongoose mongodb

8
推荐指数
1
解决办法
1万
查看次数

查找聚合中的管道在 mongodb 中不起作用

我是 mongodb 的新手,所以我希望这不会成为一个非常基本的问题。我做了一些研究,并试图应用我所发现的东西,但有些东西似乎让我忽略了。

我有两个以下格式的集合:

-----------------------------------------------------------------------
Shop
-----------------------------------------------------------------------
{
    "shopId": "1002",
    "shopPosId": "10002",
    "description": "some description"
}

-----------------------------------------------------------------------
Compte
-----------------------------------------------------------------------
{
    "shopId": "9000",
    "shopPosId": "0000",
    "clientUid": "474192"
}
Run Code Online (Sandbox Code Playgroud)

我想加入这些,在这样做之前,我想过滤掉Shop没有该shopPosId字段的 s 。

这是我的代码:

Compte.aggregate([
    {
        $match:
            { 
                $and:[{"clientUid":clientUid}]
            }
    },
    {      
        $lookup:
        {
            from: "Shop",
            localField: "shopId",
            foreignField: "shopId",
            let: {"Shop.shopPosId": "$shopPosId"},
            pipeline: [{$match: {"shopPosId": {"$exists": false}}}],
            as: "shopDescr"
        }
        }]
);
Run Code Online (Sandbox Code Playgroud)

返回的结果是 an undefined,这意味着查询没有多大意义(因为实际上我至少应该得到一个 void 数组)。

难道是因为两个集合都有字段shopPosId?(如果是这样,这条线不let: {"Shop.shopPosId": "$shopPosId"}应该处理它吗?)

mongoose mongodb mongodb-query aggregation-framework

8
推荐指数
1
解决办法
3万
查看次数

MongoDB计算数组和无限子数组中的所有对象

{
    "ArticleName": "Example Article",
    "Comments": [
        {
            "Text": "Great Article",
            "Responses": [
                {
                    "Text": "No it isnt",
                    "Responses": [
                        {
                            "Text": "Yes it is"
                        }
                    ]
                },
                {
                    "Text": "Spot on"
                }
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

每次出现的关键"文本"都会被视为注释(因此有4条评论).在Mongo中,最好的方法是什么?

arrays mongodb mongodb-query aggregation-framework

8
推荐指数
1
解决办法
143
查看次数

在mongodb中使用单个查询的多个计数

我是Mongo Db的新手,非常感谢您对此查询的一些帮助.在过去的几天里,我一直在筛选这些帖子,撕扯我的头发,看看我是否能找到与我的查询相关但没有运气的任何内容.

我有一个集合,文档结构类似于下面:

_id: xyz
Movieid: 123
MovieName: Titanic
ReleaseDate: 2000-01-01

_id: uvw
Movieid: 456
MovieName: Titanic II
ReleaseDate: 2018-01-01

_id: pqr
Movieid: 789
MovieName: Titanic III
ReleaseDate: 
Run Code Online (Sandbox Code Playgroud)

我希望在3个单独的列中实现输出作为总电影,具有发布日期的电影和没有发布日期的电影的计数,如下所示:

Total   |   Released  |     UnReleased
 3      |       2     |          1
Run Code Online (Sandbox Code Playgroud)

我能够编写单独的查询来执行计数,但我无法将所有这些成功整合到单个查询中.最终目标是创建一个视图,将这些计数作为输出.我已经尝试使用$和等运算符,但似乎无法使查询按预期工作....这是我得到的:

db.getCollection("Movies").aggregate(
    $and: [
{ 
            "$match" : 
                {"ReleaseDate":{$exists:true}}
            }
        , 
        { 
            $count:"Total"
        },
        { 
            "$match" : 
                {"ReleaseDate":{$exists:true,$nin:[""]}}
            }
        , 
        { 
            $count:"Released"
        },

        { 
            "$match" : 
                {"ReleaseDate":{$exists:true,$in:[""]}}
            }
        , 
        { 
            $count:"Unreleased"
        }


    ]
);
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework

8
推荐指数
1
解决办法
3799
查看次数