有没有办法使用mongodb shell使用自定义格式将字符串转换为日期
我想转换"21/May/2012:16:35:33 -0400"到目前为止,
有没有办法通过DateFormatter或某事
Date.parse(...)或ISODate(....)方法?
我遇到运行以下聚合查询的问题:
db.snippets.aggregate([ { '$project': { month: { '$month': '$created_at' }} } ])
Run Code Online (Sandbox Code Playgroud)
相同的错误消息是:
assert: command failed: {
"errmsg" : "exception: can't convert from BSON type EOO to Date",
"code" : 16006,
"ok" : 0 } : aggregate failed
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题.我找到了一个相关的问题
但它并没有说明如何完成任务.
我想使用mongoDB的聚合框架来运行SQL中看起来有点像:
SELECT SUM(A), B, C from myTable GROUP BY B, C;
Run Code Online (Sandbox Code Playgroud)
文档说明:
您可以从管道中的文档指定单个字段,先前计算的值,或者从多个传入字段组成的聚合键.
但目前还不清楚"几个传入领域的聚合密钥"实际上是什么?
我的数据集有点像这样:
[{ "timeStamp" : 1341834988666, "label" : "sharon", "responseCode" : "200", "value" : 10, "success" : "true"},
{ "timeStamp" : 1341834988676, "label" : "paul", "responseCode" : "200", "value" : 60, "success" : "true"},
{ "timeStamp" : 1341834988686, "label" : "paul", "responseCode" : "404", "value" : 15, "success" : "true"},
{ "timeStamp" : 1341834988696, "label" : "sharon", "responseCode" : "200", "value" : 35, "success" : "false"},
{ …Run Code Online (Sandbox Code Playgroud) 我有一组错误,所以每个错误都带有一个date字段.如何仅在DAY之前汇总/计算/分组错误(即排除当天的时间)?我想,应该应用一些智能投影.
我正在尝试编写一个聚合来识别使用多个支付来源的帐户.典型的数据是.
{
account:"abc",
vendor:"amazon",
}
...
{
account:"abc",
vendor:"overstock",
}
Run Code Online (Sandbox Code Playgroud)
现在,我想制作一个类似于此的帐户列表
{
account:"abc",
vendorCount:2
}
Run Code Online (Sandbox Code Playgroud)
我将如何在Mongo的聚合框架中编写它
例如,如果我有这样的文档
{
a: 1,
subdoc: {
b: 2,
c: 3
}
}
Run Code Online (Sandbox Code Playgroud)
如何将其转换为这样的格式?(不使用project)
{
a: 1,
b: 2,
c: 3
}
Run Code Online (Sandbox Code Playgroud) 我有一组文件:
date: Date
users: [
{ user: 1, group: 1 }
{ user: 5, group: 2 }
]
date: Date
users: [
{ user: 1, group: 1 }
{ user: 3, group: 2 }
]
Run Code Online (Sandbox Code Playgroud)
我想查询这个集合,找到我的用户数组中每个用户id在另一个数组中的所有文档,[1,5,7].在此示例中,只有第一个文档匹配.
我能找到的最佳解决方案是:
$where: function() {
var ids = [1, 5, 7];
return this.users.every(function(u) {
return ids.indexOf(u.user) !== -1;
});
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎伤害了性能在$ where docs中说明:
$ where评估JavaScript并且无法利用索引.
如何改进此查询?
我在解决这个mongodb(猫鼬)问题时遇到了很多困难.
这个架构'推荐'(用户名,roomId,ll和日期),其集合包含用户推荐.
我需要获得最推荐的房间列表(按roomId).下面是架构和我尝试过的mongoose查询解决方案.
var recommendSchema = mongoose.Schema({
username: String,
roomId: String,
ll: { type: { type: String }, coordinates: [ ] },
date: Date
})
recommendSchema.index({ ll: '2dsphere' });
var Recommend = mongoose.model('Recommend', recommendSchema);
Recommend.aggregate(
{
$group:
{
_id: '$roomId',
recommendCount: { $sum: 1 }
}
},
function (err, res) {
if (err) return handleError(err);
var resultSet = res.sort({'recommendCount': 'desc'});
}
);
Run Code Online (Sandbox Code Playgroud) mongoose mongodb node.js mongodb-query aggregation-framework
我正在使用Mongoose聚合(MongoDB版本3.2).
我有一个users数组的字段.我希望$project将此数组中的第一项作为新字段user.
我试过了
{ $project: {
user: '$users[0]',
otherField: 1
}},
{ $project: {
user: '$users.0',
otherField: 1
}},
{ $project: {
user: ? $first: '$users'},
otherField: 1
}},
Run Code Online (Sandbox Code Playgroud)
但都不起作用.
我该怎么做才能正确?谢谢
在mongo中,在执行aggregationwith之后$lookup,我希望请求只返回一些字段而不是整个文档.
我有以下查询:
db.somecollection.aggregate([{
$lookup: {
from: "campaigns",
localField: "campId",
foreignField: "_id",
as: "campaign"
}
}, {
$unwind: "$campaign"
}, {
$lookup: {
from: "entities",
localField: "campaign.clientid",
foreignField: "_id",
as: "campaign.client"
}
}]);
Run Code Online (Sandbox Code Playgroud)
此请求将返回此信息:
{
"_id" : ObjectId("56cc7cd1cc2cf62803ebfdc7"),
"campId" : ObjectId("56c740e4479f46e402efda84"),
"articleId" : ObjectId("56c742c06094640103ba3843"),
"campaign" : {
"_id" : ObjectId("56c740e4479f46e402efda84"),
"clientid" : ObjectId("56c740b8479f46e402efda83"),
"client" : [
{
"_id" : ObjectId("56c740b8479f46e402efda83"),
"username" : "someusername",
"shhh" : "somehashedpassword",
"email" : "mail@mail.com",
}
]
}
Run Code Online (Sandbox Code Playgroud)
该请求运行良好,但我想过滤字段campaign.client只能得到例如_id和 …