小编Joh*_*yHK的帖子

.find() 在 MongoDB 中的多个条件

我正在使用meteor 和JavaScript 构建一个webapp,并想根据属性过滤一个JSON 对象。我可以运行fullList.find()以获取所有内容并fullList.find({'Color': 'r'})仅获取“红色”项目,但我想返回所有“红色”或“蓝色”项目,并且无法找出正确的语法。我尝试了各种组合,例如fullList.find({'Color': 'r' || 'b'})and fullList.find({'Color': ('r' || 'b')}),但它要么根本不运行,要么返回只有一个属性的项目,而不是返回带有任一属性的项目。我觉得这应该很容易解决,我只是对 JavaScript 不太熟悉。

这是我的(相关)代码以确保完整性。只有两个条件为真(而不是一或三个)的逻辑失败:

indicadores: function(){
        if (Session.get("displayUrgencies")){
            if (Session.get("displayInsuff")){
                if (Session.get("displayStrengths")){
                    console.log("display all");
                    return fullList.find();
                }
                else {
                    console.log("display urgencies and insufficiencies");
                    return fullList.find({'Color': 'v' || 'r'});
                }
            }
            else {
                if (Session.get("displayStrengths")){
                    console.log("display urgencies and strengths");
                    return fullList.find({'Color': 'b' || 'r'});
                }
                else {
                    console.log("display urgencies");
                    return fullList.find({'Color': 'r'});
                }
            }
        }
        else if (Session.get("displayInsuff")){
            if (Session.get("displayStrengths")){
                console.log("display insufficiencies and …
Run Code Online (Sandbox Code Playgroud)

mongodb meteor

2
推荐指数
1
解决办法
9895
查看次数

mongodb:限制数字字段的可能值

我想限制mongo中字段的选择:

units : { type: Number, default: 1 },
Run Code Online (Sandbox Code Playgroud)

但我想添加这个约束:类似的东西

授权值:[1,10,100,1000]

mongoose mongodb

2
推荐指数
1
解决办法
920
查看次数

动态加载挖空组件

这是我的HTML:

<a href="#page1">page 1</a>
<a href="#page2">page 2</a>
Run Code Online (Sandbox Code Playgroud)

这是我的js:

define(['jquery', 'knockout'], function ($, ko) {


     ko.components.register('page1', {
    require: 'App/Controllers/page1'
});
ko.components.register('page2', {
    require: 'App/Controllers/page2'
});

    window.onhashchange = function () {
        var hash = location.hash.replace('#', '');
        $('#body').html('<' + hash + '></' + hash + '>'); //hash = page1 or page2
    }

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

但是,当散列更改时,组件不会加载,主体内容只是: <page1></page1>或第二页.如果我像这样改变我的js:

define(['jquery', 'knockout'], function ($, ko) {

    ko.components.register('page1', {
    require: 'App/Controllers/page1'
});
ko.components.register('page2', {
    require: 'App/Controllers/page2'
});

    $('#body').html('<page1></page1>');

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

它工作正常

knockout.js

2
推荐指数
1
解决办法
3727
查看次数

在PyMongo中使用正则表达式动态构建查询

我想从Python查询MongoDB上的不同字段,就像在高级搜索中一样.

只用一个字段保持示例简单,如果我{'Title': /my string/}在Mongo上手动查询,我会得到预期的结果.

在Python上我正在做以下事情:

query = {}
args = request.form
for arg in args:
  key = "{0}".format(arg)
  if args[arg] != "":
    query[key] = "/" + args[arg].lower() + "/"
Run Code Online (Sandbox Code Playgroud)

但是,查询是这样的(注意引号):

{'Title': '/my string/'}
Run Code Online (Sandbox Code Playgroud)

所以我没有得到任何结果.如何实现正确的查询?

python json mongodb pymongo

2
推荐指数
1
解决办法
491
查看次数

猫鼬:流式传输聚合的JSON数据

如标题所示,我正在使用Express我的webapp。

目前,我的代码如下所示:

API控制器

var mongoose = require('mongoose');
var Doc = mongoose.model('Document');

var sendJSONresponse = function(res, status, content) {
  res.status(status);
  res.json(content);
};

// "/api/documents"
module.exports.listAllDocuments = function(req, res) {

  var stream = Doc.find().stream();
  stream.on('data', function (chunk) {
    res.write(JSON.stringify(chunk));
  }).on('error', function (err) {
    console.log('Error: ' + err);
  }).on('end', function () {
    res.end();
  });

};
Run Code Online (Sandbox Code Playgroud)

var stream = Doc.find().stream();我希望利用而不是使用aggregate()

像一样find()aggregate()应该是可读流,对吗?

但是,当我简单地find()用一个aggregate()电话代替时,它似乎不起作用。

它说类型错误:Object #<Aggregate> has no method 'stream'。有什么方法可以流式传输聚合的JSON数据 …

streaming aggregate mongoose

2
推荐指数
1
解决办法
1228
查看次数

如何在mongodb中删除多个文档?

我有名为用户的集合名称。在这个集合中,总共有6个文档。我想使用称为“名称”的列名称之一删除3个文档。我用这个查询:

db.users.deleteMany([
{
"name":"viki"
},
{
"name" : "vino"
},
{
 "name" : "naranyamoorthy"
}
])
Run Code Online (Sandbox Code Playgroud)

但是我有一个错误,有人可以帮助我吗?

这些是我的文件。我想删除3个文档,名称分别为viki,vino,naranyamoorthy。

db.users.deleteMany([
{
"name":"viki"
},
{
"name" : "vino"
},
{
 "name" : "naranyamoorthy"
}
])
Run Code Online (Sandbox Code Playgroud)

json mongodb

2
推荐指数
1
解决办法
1551
查看次数

Mongodb $unwind 聚合不起作用

我是 mongodb 聚合的新手。我的 mongo 文档有很多数组。我需要将其导出为平面文件。为此,我需要构建它。我尝试了以下聚合:

[
{$unwind : "$items" },
{$unwind : "$items.discounts"},    
{$unwind : "$payments"},
{$unwind : "$payments.items"},  
{$unwind : "$payments.refunds"}
]
Run Code Online (Sandbox Code Playgroud)

它起作用了,然后我只是添加了以下条件来过滤数据

[
{$match : { "updatedtime": { $gt: 1514764800000}}},
{$unwind : "$items" },
{$unwind : "$items.discounts"},    
{$unwind : "$payments"},
{$unwind : "$payments.items"},  
{$unwind : "$payments.refunds"}
]
Run Code Online (Sandbox Code Playgroud)

返回 0 行,我再次尝试使用 match 语句

[
{$match : { "updatedtime": { $gt: 1514764800000}}}
]
Run Code Online (Sandbox Code Playgroud)

它再次起作用。

[
{$match : { "updatedtime": { $gt: 1514764800000}}},
{$unwind : "$items" }
]
Run Code Online (Sandbox Code Playgroud)

作品。

[
{$match …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework

2
推荐指数
1
解决办法
2394
查看次数

如何在mongoose Web服务器上保持链接活动

我尝试使用keep-alive连接mongoose,但似乎mongoose首先关闭连接.

我更改了embed.c以发回连接:keep-alive.响应后,连接仍然关闭.

border@ubuntu:~$ nc 127.0.0.1 9999
GET /test_get_request_info HTTP/1.1
Connection: keep-alive

HTTP/1.1 200 OK
Content-Type: text/plain
Connection: keep-alive

Method: [GET]
URI: [/test_get_request_info]
HTTP version: [1/1]
HTTP header [Connection]: [keep-alive]
Query string: []
POST data: []
Remote IP: [2130706433]
Remote port: [56719]
Remote user: []          <-----------------connection closed, nc returns
border@ubuntu:~$
Run Code Online (Sandbox Code Playgroud)

web-services http keep-alive mongoose-web-server

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

Node.JS / Mongoose / Express -&gt; 对象没有方法“findAll”

我正在尝试将方法从 model.js 传递到我的 Route.js ..并且我的路线找不到任何方法!我搜索了解决方案并测试了很多代码,但没有成功。

我是 Node 的初学者,如果这是一个愚蠢的错误,我很抱歉。

这是我的代码的一部分:


路由.js

var mongoose    = require('mongoose');
var membersModel = new require('../models/MemberModel');

// Member list page
exports.list = function(req, res){
    membersModel.findAll(function(err, docs){
        res.render('list.jade', { title: 'My Registration App - Member list', member:  docs });
    });
};
Run Code Online (Sandbox Code Playgroud)

会员模型.js

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

    // Open DB connection


var MemberSchema = new Schema({
    id        : ObjectId,
    title     : { type: String, required: true, enum: ['Mr', 'Mrs', 'Mme', 'Miss'] },
    lastname …
Run Code Online (Sandbox Code Playgroud)

methods model-view-controller mongoose node.js express

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

我如何将mongoose json结果转换为数组?

我有一个示例代码,显示结果,并希望将结果转换为数组.

TranModel
        .find({ quantityout: 1 }, 
                        { _id: 0} )
        .sort({ tag: 1 })
        .select( 'tag' )
        .populate( 'createdby' )
        .exec(function(err, data){
            if(err){
                res.json(err)
            } else {
                res.json(data)
            }
        })
Run Code Online (Sandbox Code Playgroud)

结果

[
  {
    "tag": "TH000001"
  },
  {
    "tag": "TH000006"
  },
  {
    "tag": "TH000009"
  },
  {
    "tag": "TH000011"
  },
  {
    "tag": "TH000014"
  }
]
Run Code Online (Sandbox Code Playgroud)

我需要将结果转换为这样的结果

[
  "TH000001",
  "TH000006",
  "TH000009",
  "TH000011",
  "TH000014"
]
Run Code Online (Sandbox Code Playgroud)

mongoose node.js

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