标签: mongodb-query

如何从Mongoose中的集合中排除一个特定字段?

我有一个带Mongoose ODM的NodeJS应用程序(Mongoose 3.3.1).我想从我的集合中检索除1之外的所有字段.例如:我有一个集合Product有6个字段,我想要选择除"Field"字段之外的所有字段.我使用" 排除 "方法,但得到错误..这是我的代码.

    var Query = models.Product.find();
    Query.exclude('title Image');

    if (req.params.id) {
        Query.where('_id', req.params.id);
    }


    Query.exec(function (err, product) {
        if (!err) {
            return res.send({ 'statusCode': 200, 'statusText': 'OK', 'data': product });
        } else {
            return res.send(500);
        }
    });
Run Code Online (Sandbox Code Playgroud)

但这会返回错误

Express
500 TypeError: Object #<Query> has no method 'exclude'.........
Run Code Online (Sandbox Code Playgroud)

我也试过,var Query = models.Product.find().exclude('title','Image');var Query = models.Product.find({}).exclude('title','Image'); 而得到同样的错误.如何从Mongoose中的集合中排除一个/(两个)特定字段.

javascript mongoose mongodb mongodb-query

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

MongoDB - $ size的参数必须是一个数组,但类型为:EOO

尝试使用icCube创建MongoDB数据源.我们的想法是将数组的大小作为新字段返回.就像是 :

$project:
{ 
 "people": 1, 
 "Count myFieldArray" : {$size : "$myFieldArray" }
}
Run Code Online (Sandbox Code Playgroud)

但我得到一些记录以下错误:

The argument to $size must be an Array, but was of type: EOO
Run Code Online (Sandbox Code Playgroud)

如果字段为空或不是数组(摆脱错误),是否有一种方法大小为0?

mongodb mongodb-query aggregation-framework iccube

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

mongodb insert命令中是否有"upsert"选项?

我知道这可能是一个愚蠢的问题,但我在电子书上看到upsertMongoDB插入中有一个选项.我找不到有关此问题的适当文件.有人能教育我这个吗?

mongodb mongodb-query

49
推荐指数
2
解决办法
7万
查看次数

无法启动mongod.service:找不到单位mongod.service

我按照mongodb安装文档中提到的所有步骤进行操作.

对于ubuntu 16.04

第1步:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
Run Code Online (Sandbox Code Playgroud)

第2步:

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
Run Code Online (Sandbox Code Playgroud)

第3步:

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

第4步:

sudo apt-get install -y mongodb-org
Run Code Online (Sandbox Code Playgroud)

第5步:

sudo service mongod start
Run Code Online (Sandbox Code Playgroud)

当我开始mongodb得到一个错误

"Failed to start mongod.service: Unit mongod.service not found." please help me to solve this.
Run Code Online (Sandbox Code Playgroud)

ubuntu mongodb mongodb-query mean-stack

49
推荐指数
13
解决办法
9万
查看次数

在mongo shell中将Mongo查询输出打印到文件

和Mongo一起2天,我有一个SQL背景所以请耐心等待.与mysql一样,在MySQL命令行中将查询结果输出到机器上的文件非常方便.我试图理解如何在shell中做同样的事情

我可以通过在shell之外并执行以下命令轻松获取我想要的查询的输出:

mongo localhost:27017/dbname --eval "printjson(db.collectionName.findOne())" >> sample.json
Run Code Online (Sandbox Code Playgroud)

上面的方法很好,但它需要我退出mongo shell或打开一个新的终端选项卡来执行此命令.如果我可以在shell内部完成此操作,那将非常方便.

PS:问题是我在SO上发布的问题的一个分支

io mongodb mongo-shell mongodb-query

48
推荐指数
7
解决办法
7万
查看次数

如何将元素插入MongoDB内部列表?

我在MongoDB中存储了以下文档:

{
    name: 'myDoc',
    list: [
        {
            id:1
            items:[
                {id:1, name:'item1'},
                {id:2, name:'item2'}
            ]
        },
        {
            id:2
            items:[
                {id:1, name:'item1'},
                {id:3, name:'item3'}
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我找到了一种方法,可以使用"list"添加元素,$addToSet但是找不到添加到项目的"项目"列表的方法.

例如,我得到以下内容:

{id:5, name:'item5'} 
Run Code Online (Sandbox Code Playgroud)

我想将它添加到列表中元素的项目,ID为:2.

mongodb mongodb-query

47
推荐指数
2
解决办法
6万
查看次数

Mongodb find()查询:只返回唯一值(没有重复)

我有一组文件:

{
    "networkID": "myNetwork1",
    "pointID": "point001",
    "param": "param1"
}
{
    "networkID": "myNetwork2",
    "pointID": "point002",
    "param": "param2"
}
{
    "networkID": "myNetwork1",
    "pointID": "point003",
    "param": "param3"
}
...
Run Code Online (Sandbox Code Playgroud)

pointID是唯一的,但networkID不是.

是否可以以这样的方式查询Mongodb:结果将是:[myNetwork1,myNetwork2]

现在我只设法返回[myNetwork1,myNetwork2,myNetwork1]

我需要一个唯一的networkID列表来填充自动完成select2组件.由于我可能有多达50K的文档,我更希望mongoDb在查询级别过滤结果.

mongodb mongodb-query

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

insert(),insertOne()和insertMany()方法有什么区别?

什么之间的差异insert(),insertOne()以及insertMany()对MongoDB的方法.在什么情况下我应该使用每一个?

我阅读了文档,但是使用每个文档时都不清楚.

mongodb nosql mongodb-query

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

如何将mongo命令导入平面文件

如何将MongoDB命令的结果导出到平面文件

例如,如果我要db.collectionname.find()进入平面文件.

我试过db.collectionname.find() >> "test.txt"似乎没有工作.

mongodb mongodb-java mongodb-query

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

Mongoose查找/更新子文档

我有文档文件的以下模式:

var permissionSchema = new Schema({
    role: { type: String },
    create_folders: { type: Boolean },
    create_contents: { type: Boolean }
});

var folderSchema = new Schema({
    name: { type: string },
    permissions: [ permissionSchema ]
});
Run Code Online (Sandbox Code Playgroud)

因此,对于每个页面,我可以拥有许多权限.在我的CMS中有一个面板,我列出了所有文件夹及其权限.管理员可以编辑单个权限并保存.

我可以使用其权限数组轻松保存整个Folder文档,其中只修改了一个权限.但我不想保存所有文档(真正的架构有更多字段)所以我这样做:

savePermission: function (folderId, permission, callback) {
    Folder.findOne({ _id: folderId }, function (err, data) {
        var perm = _.findWhere(data.permissions, { _id: permission._id });                

        _.extend(perm, permission);

        data.markModified("permissions");
        data.save(callback);
    });
}
Run Code Online (Sandbox Code Playgroud)

但问题是烫发总是未定义的!我尝试以这种方式"静态地"获取权限:

var perm = data.permissions[0]; …
Run Code Online (Sandbox Code Playgroud)

javascript mongoose mongodb node.js mongodb-query

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