我的所有记录都有一个名为"图片"的字段.该字段是一个字符串数组.
我现在想要这个数组不为空的最新10条记录.
我已经google了一下,但奇怪的是我在这方面找不到多少.我已经阅读了$ where选项,但我想知道本机函数有多慢,以及是否有更好的解决方案.
即便如此,这不起作用:
ME.find({$where: 'this.pictures.length > 0'}).sort('-created').limit(10).execFind()
Run Code Online (Sandbox Code Playgroud)
什么都不返回 离开this.pictures
没有长度位确实有效,但当然它也返回空记录.
我试图只选择一个特定的字段
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)
为什么???
例如,我有这些文件:
{
"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) 尝试使用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?
使用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) 我有文档文件夹的以下模式:
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) 我正在使用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)
谁知道怎么做这个查询?
要修改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 - 当多个用户同时发送请求时出现意外行为.这个人建议使用更新而不是保存,我还不完全确定它为什么会有所作为.
谢谢!
我有一个像这个结构的"状态"集合 -
{
_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分钟间隔的结果.
我收集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
不会覆盖价值的东西.