小编Nei*_*unn的帖子

查找数组字段不为空的MongoDB记录

我的所有记录都有一个名为"图片"的字段.该字段是一个字符串数组.

我现在想要这个数组不为空的最新10条记录.

我已经google了一下,但奇怪的是我在这方面找不到多少.我已经阅读了$ where选项,但我想知道本机函数有多慢,以及是否有更好的解决方案.

即便如此,这不起作用:

ME.find({$where: 'this.pictures.length > 0'}).sort('-created').limit(10).execFind()
Run Code Online (Sandbox Code Playgroud)

什么都不返回 离开this.pictures没有长度位确实有效,但当然它也返回空记录.

mongoose mongodb

444
推荐指数
9
解决办法
27万
查看次数

Mongoose,使用find选择特定字段

我试图只选择一个特定的字段

exports.someValue = function(req, res, next) {
    //query with mongoose
    var query = dbSchemas.SomeValue.find({}).select('name');

    query.exec(function (err, someValue) {
        if (err) return next(err);
        res.send(someValue);
    });
};
Run Code Online (Sandbox Code Playgroud)

但是在我的json响应中我也收到了_id,我的文档架构只有两个fiels,_id和name

[{"_id":70672,"name":"SOME VALUE 1"},{"_id":71327,"name":"SOME VALUE 2"}]
Run Code Online (Sandbox Code Playgroud)

为什么???

javascript mongoose mongodb node.js

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

mongodb组由多个字段组成

例如,我有这些文件:

{
  "addr": "address1",
  "book": "book1"
},
{
  "addr": "address2",
  "book": "book1"
},
{
  "addr": "address1",
  "book": "book5"
},
{
  "addr": "address3",
  "book": "book9"
},
{
  "addr": "address2",
  "book": "book5"
},
{
  "addr": "address2",
  "book": "book1"
},
{
  "addr": "address1",
  "book": "book1"
},
{
  "addr": "address15",
  "book": "book1"
},
{
  "addr": "address9",
  "book": "book99"
},
{
  "addr": "address90",
  "book": "book33"
},
{
  "addr": "address4",
  "book": "book3"
},
{
  "addr": "address5",
  "book": "book1"
},
{
  "addr": "address77",
  "book": "book11"
},
{ …
Run Code Online (Sandbox Code Playgroud)

mongodb aggregation-framework

88
推荐指数
4
解决办法
14万
查看次数

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万
查看次数

Mongoose填充vs对象嵌套

使用Mongoose填充和直接对象包含之间是否存在任何性能差异(查询的处理时间)?什么时候应该使用?

猫鼬人口例子:

var personSchema = Schema({
  _id     : Number,
  name    : String,
  stories : [{ type: Schema.Types.ObjectId, ref: 'Story' }]
});

var storySchema = Schema({
  _creator : { type: Number, ref: 'Person' },
  title    : String,
});
Run Code Online (Sandbox Code Playgroud)

Mongoose对象嵌套示例:

var personSchema = Schema({
  _id     : Number,
  name    : String,
  stories : [storySchema]
});

var storySchema = Schema({
  _creator : personSchema,
  title    : String,
});
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js

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

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万
查看次数

在日期时间的月,日,年...查询Mongodb

我正在使用mongodb,我以这种方式将datetime存储在我的数据库中

约会"17-11-2011 18:00"我存储:

date = datetime.datetime(2011, 11, 17, 18, 0)
db.mydatabase.mycollection.insert({"date" : date})
Run Code Online (Sandbox Code Playgroud)

我想做这样的请求

month = 11
db.mydatabase.mycollection.find({"date.month" : month})
Run Code Online (Sandbox Code Playgroud)

要么

day = 17
db.mydatabase.mycollection.find({"date.day" : day})
Run Code Online (Sandbox Code Playgroud)

谁知道怎么做这个查询?

python datetime mongodb pymongo mongodb-query

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

.save()和使用update()之间的猫鼬差异

要修改mongoose中现有条目中的字段,使用之间有什么区别

model = new Model([...])
model.field = 'new value';
model.save();
Run Code Online (Sandbox Code Playgroud)

还有这个

Model.update({[...]}, {$set: {field: 'new value'});
Run Code Online (Sandbox Code Playgroud)

我问这个问题的原因是因为有人建议我昨天发布的一个问题:NodeJS和Mongo - 当多个用户同时发送请求时出现意外行为.这个人建议使用更新而不是保存,我还不完全确定它为什么会有所作为.

谢谢!

javascript mongoose mongodb node.js

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

在MongoDb中按15分钟的时间间隔对结果进行分组

我有一个像这个结构的"状态"集合 -

{
    _id: ObjectId("545a0b63b03dbcd1238b4567"),
    status: 1004,
    comment: "Rem dolor ipsam placeat omnis non. Aspernatur nobis qui nisi similique.",
    created_at: ISODate("2014-11-05T11:34:59.804Z")
},
{
    _id: ObjectId("545a0b66b03dbcd1238b4568"),
    status: 1001,
    comment: "Sint et eos vero ipsa voluptatem harum. Hic unde voluptatibus et blanditiis quod modi.",
    created_at: ISODate("2014-11-05T11:35:02.814Z")
}
....
....
Run Code Online (Sandbox Code Playgroud)

我需要从该集合中获得15分钟间隔的结果.

mongodb mongodb-query aggregation-framework

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

如果MongoDB文档字段不存在,我该如何更新?

我收集foo了以下文件:

{site_id: 'xxx', title: {ru: 'a', en: 'b'}, content: {ru: 'a', en: 'b'}}
{site_id: 'xxx', title: {ru: 'c', de: 'd'}, content: {ru: 'c', de: 'd'}}
Run Code Online (Sandbox Code Playgroud)

我需要更新可能存在或不存在的多个字段:

db.foo.update(
    { site_id: 'xxx'},
    { $set: {'title.de': '', 'content.de': ''}},
    {multi: true}
)
Run Code Online (Sandbox Code Playgroud)

但我需要一些$set不会覆盖价值的东西.

mongodb

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