小编Joh*_*yHK的帖子

如何在Python中创建Mongodb中唯一的字段组合

我想创建一个表,其中两个字段组合在一起形成一个索引字段.我创建表的Python代码如下.我想要做的是使组合字段course_namegroup_name唯一,以便没有两个具有相同course_namegroup_name可以创建的组.有人可以帮我这个吗?

class SocialGroup(Document):
    timestamp = DateTimeField(default=datetime.now)
    course_name = StringField()
    group_name = StringField(choices=[('A', 1), ('B', 1), ('C', 1),('D', 1), ('E', 1), ('F', 1), ('None',1)], default="None")
Run Code Online (Sandbox Code Playgroud)

python mongodb mongoengine

6
推荐指数
1
解决办法
2024
查看次数

使用Node.js通过其唯一的_id更新多个MongoDB对象

基本上我正在尝试根据其唯一的objectID(_id)更新Mongo数据库上的多个对象.我尝试了以下但他们没有工作:

  var new_arr = [];
  for (var i = 0; i < req.body.length; i++) {
    // req.body is an array received from the POST request.
    new_arr.push({"_id": new mongodb.ObjectID(req.body[i])})
  }
  console.log(new_arr);

  // new_arr is not accepted since an object is expected.
  job_applications.updateMany(
      new_arr
      ,
      {
        $set: {"application_status": "rejected"}
      }, function (err, results) {
        console.log(results);
        console.log(err);
        if (!err) {
          console.log('success with reject');
          res.sendStatus(200);
        }
      }
  );
Run Code Online (Sandbox Code Playgroud)

我也试过以下没有运气.

var job_applications = req.app.locals.job_applications;
  var new_arr = [];
  for (var i = 0; i < …
Run Code Online (Sandbox Code Playgroud)

mongodb node.js mongodb-query

6
推荐指数
1
解决办法
1092
查看次数

node.js - 确定由于没有行而未调用每行异步函数

我正在尝试编写将在SQLite查询不返回结果时执行的代码.但是,Node.js的异步性质使这很困难.我不知道我是否可以在回调函数中编写代码,因为当我使用将导致空结果的输入进行测试时,没有任何反应.

我正在做

 db.each("SELECT pid, collection , photo FROM photos WHERE collection = '"+collection_id+"' AND pid = '"+photo_id+"' ", function(err, row) {
      console.log("PHOTO FOUND");

//code inside the callback function

  });
    //code I want
Run Code Online (Sandbox Code Playgroud)

具体来说,我想渲染一些通用的东西,以防用户请求不在db中的内容我该怎么办?

sqlite node.js

5
推荐指数
1
解决办法
4448
查看次数

如何在mongodb中返回弹出的元素

我想从数组中弹出一项,并获取该元素。

在mongodb中有可能吗?

我没有找到这样的信息

http://docs.mongodb.org/manual/reference/operator/pop/

mongodb mongomapper

5
推荐指数
1
解决办法
1084
查看次数

为什么这个JavaScript代码(RequireJS和Node.js的模块模式)有效?

由于我对RequireJS和Node.js(以及一般的JavaScript)的理解有限,我通常会看一些着名的JavaScript库的来源.每当我看到这样的事情:

( // Wrapping
    function (root, factory) {
        if (typeof exports === 'object') { // Node.js

            var underscore = require('underscore');
            var backbone = require('backbone');

            module.exports = factory(underscore, backbone);

        } else if (typeof define === 'function' && define.amd) { // Require.JS

            define(['underscore', 'backbone'], factory);

        } 
    }(this, function (_, Backbone) { // Factory function, the implementation
        "option strict";

        function Foo() {}

        return Foo; // Export the constructor
    })
); // Wrapping
Run Code Online (Sandbox Code Playgroud)

我能理解的(希望如此):

  • 当脚本未包含在<script>标记中时,将自动执行包装代码的匿名函数
  • 此代码适用于RequireJS和Node.js(if最开始检查); factory函数的结果既可以分配给module.exports(Node.js),也可以用作函数的 …

javascript module function node.js requirejs

5
推荐指数
1
解决办法
1980
查看次数

有条件地执行回调

什么是解决以下控制流程的最佳方法:

  1. 我只想调用getSomeOtherDataif someData等于某个值/通过一些条件测试

  2. 在这两种情况下,我总是想打电话 getMoreData

http.createServer(function (req, res) {
    getSomeData(client, function(someData) {
        // Only call getSomeOtherData if someData passes some conditional test
        getSomeOtherData(client, function(someOtherData) {
           // Always call getMoreData
           getMoreData(client, function(moreData) {
             res.end();
           });
       });
   });
});           
Run Code Online (Sandbox Code Playgroud)

asynchronous callback control-flow node.js

5
推荐指数
1
解决办法
457
查看次数

node.js async.eachSeries太早调用最终回调

这就是我想要的:我有一个叫做结果的大数组.我希望将该数组中的每个项放入我的迭代函数中并将其保存到我的mongoDB中(我在这里省略了一些不重要的步骤).在将这些项目中的每一项保存到数据库(或拒绝)之后,我希望console.log显示"All done".不幸的是,所有完成都会在调用系列后立即显示,而其他所有内容仍在处理中.我该怎么做?

我正在使用mongoose和一个名为'light'的模型,为了便于阅读,我省略了代码中的所有错误消息.我对eachSeries部分使用node-async

var async = require('async');    
var results = [very big array]
var iteration = function(row,callbackDone) {
  light.find({data: row.data}, function (err,entry) {
    if(entry.length) {
      callbackDone();
      return console.log(entry + ' already exists');
    }
    var newEntry = new light(row);
    newEntry.save(function (err,doc) {
      console.log(entry + ' saved');
      callbackDone();
    });
  });
};

async.eachSeries(results,iteration, function (err) {
  console.log('All done');
});
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous mongodb node.js

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

使用Mongo按组计算多个不同的字段

我的数据集看起来像

{"BrandId":"a","SessionId":100,"UserName":"tom"}
{"BrandId":"a","SessionId":200,"UserName":"tom"}
{"BrandId":"b","SessionId":300,"UserName":"mike"}
Run Code Online (Sandbox Code Playgroud)

我想用brandid计算不同的会话和用户名组,示例sql如下:

select brandid,count_distinct(sessionid),count_distinct(username)
from data
group by brandid
Run Code Online (Sandbox Code Playgroud)

我试着编写Mongo DB,我当前的代码如下,它不起作用.反正有没有让它工作?

db.logs.aggregate([ 
    {$group:{
        _id:{brand:"$BrandId",user:"$UserName",session:"$SessionId"},  
        count:{$sum:1}}}, 
    {$group:{
        _id:"$_id.brand",
        users:{$sum:"$_id.user"},
        sessions:{$sum:"$_id.session"}
    }}
])
Run Code Online (Sandbox Code Playgroud)

对于某个例子,预期的数量是

{"BrandId:"a","countSession":2,"countUser":1}
{"BrandId:"b","countSession":1,"countUser":1}
Run Code Online (Sandbox Code Playgroud)

如果您了解SQL,则期望结果与我提到的SQL相同.

mongodb aggregation-framework

5
推荐指数
1
解决办法
2867
查看次数

如何在mongodb中选择嵌套文档?

可以说我有一个与此结构嵌套的文档:

{
    "_id": "a125",
    "Language": null,
    "Name": "Some name",
    "Related": [{
        "_id": "b125",
        "Status": 0,
    }, {
        "_id": "b126",
        "Status": 1,
    }]
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用c#驱动程序选择id为b126的“相关”模型,并同时获取父文档ID(a125)?

正如我想象的那样,结果应如下所示:

{
  "_id": "a125",
  "Related": {
     "_id": "b126",
     "Status": 1,
  }
}
Run Code Online (Sandbox Code Playgroud)

c# mongodb mongodb-.net-driver

5
推荐指数
1
解决办法
2506
查看次数

在进行查询时通过mongoose降低内存使用量的方法

我正在研究节点后端尝试通过mongoose优化对mongodb的非常繁重的查询.预期的返回大小是相当大的,但由于某些原因,当我发出请求时,节点开始消耗大量内存,例如200mb +用于单个大请求.

考虑到大多数情况下回报的大小小于10mb,这似乎不对.它在完成后也拒绝放弃内存,我知道这可能只是V8 GC执行其默认行为,但我担心的是单个find()请求消耗的大量内存.

我通过测试find()调用将其隔离了.完成调用后,它会执行一些后处理,然后将数据发送到回调,所有这些都在匿名函数中.我尝试使用querystream而不是model.find(),但它没有显示真正的改进.

环顾四周没有得到任何回应,所以我会问,是否有一种已知的方法来减少,控制或优化猫鼬的内存使用量?有谁知道为什么这么多的内存被用于一次通话?

编辑

根据Johnny和Blakes的建议,使用lean()和流的混合,并使用暂停和恢复,极大地改善了运行时和内存使用.谢谢!

memory mongoose mongodb node.js

5
推荐指数
2
解决办法
2247
查看次数