任何人都可以帮助我如何将下面的查询转换为mongodb:
Select KeyID, SUM(Qty) from Table where Date <= '1998-12-01'
Run Code Online (Sandbox Code Playgroud)
(日期格式为YY-MM-DD)
如何在具有undefined值的字段中搜索记录过滤:
db.records.aggregate({
$match: {
myField: "undefined",
}
})
Run Code Online (Sandbox Code Playgroud) 如何在mongodb中列出集合中字段的所有非不同值?我找到了明确的命令来找到该字段的所有不同值,但我想要相反.
我正在对大约300k +记录的集合运行聚合,这需要几个展开和重新组合.我遇到了以下错误;
'exception: Exceeded memory limit for $group, but didn\'t allow external sort. Pass allowDiskUse:true to opt in.'
Run Code Online (Sandbox Code Playgroud)
我似乎无法通过使用mongoose.js API来解决如何传递此选项的问题?
我收集了产品.每个产品都包含一系列项目.
> db.products.find().pretty()
{
"_id" : ObjectId("54023e8bcef998273f36041d"),
"shop" : "shop1",
"name" : "product1",
"items" : [
{
"date" : "01.02.2100",
"purchasePrice" : 1,
"sellingPrice" : 10,
"count" : 15
},
{
"date" : "31.08.2014",
"purchasePrice" : 10,
"sellingPrice" : 1,
"count" : 5
}
]
}
Run Code Online (Sandbox Code Playgroud)
那么,请你给我一个建议,如何查询MongoDB以检索所有只有单个项目的产品,其中日期等于我传递给查询作为参数的日期.
"31.08.2014"的结果必须是:
{
"_id" : ObjectId("54023e8bcef998273f36041d"),
"shop" : "shop1",
"name" : "product1",
"items" : [
{
"date" : "31.08.2014",
"purchasePrice" : 10,
"sellingPrice" : 1,
"count" : 5
}
]
}
Run Code Online (Sandbox Code Playgroud) 我有一个包含以下文件的产品系列:
{ "_id" : 1, "item" : "abc", created: ISODate("2014-10-01T08:12:00Z") }
{ "_id" : 2, "item" : "jkl", created: ISODate("2014-10-02T09:13:00Z") }
{ "_id" : 3, "item" : "hjk", created: ISODate("2014-10-02T09:18:00Z") }
{ "_id" : 4, "item" : "sdf", created: ISODate("2014-10-07T09:14:00Z") }
{ "_id" : 5, "item" : "xyz", created: ISODate("2014-10-15T09:15:00Z") }
{ "_id" : 6, "item" : "iop", created: ISODate("2014-10-16T09:15:00Z") }
Run Code Online (Sandbox Code Playgroud)
我想绘制一个描述产品数量的图表,所以我使用mongodb聚合框架按天计算产品组:
var proj1 = {
"$project": {
"created": 1,
"_id": 0,
"h": {"$hour": "$created"},
"m": {"$minute": "$created"},
"s": {"$second": …Run Code Online (Sandbox Code Playgroud) 如果我想要document.a == document.b,那么返回集合中所有文档的最佳方法是什么?
我试过了
db.collection.aggregate([ { $match: { $eq: [ '$a', '$b' ] } }])
Run Code Online (Sandbox Code Playgroud)
但它返回没有错误或结果,因为我认为它字面上匹配字符串"$ a"和"$ b".是否有不同的方法来指定这些是字段?
db.collection.aggregate([ { $project: {
eq: { $cond: [ { $eq: [ '$a', '$b' ] }, 1, 0 ] }
} },
{ $match: { eq: 1 } }])
Run Code Online (Sandbox Code Playgroud)
上述工作,但需要额外的步骤,使用它找到的任何文件或预测所有可能的字段再次查询.
有没有更好的方法来实现此查询?
我们在MongoDB中使用unix时间戳存储了一个日期,如何在查询时获取日期?有没有办法以ISODate格式显示时间戳?
使用MongoDB聚合框架时是否可以合并数组字段?以下是我要解决的摘要问题:
用于聚合的示例输入文档:
{
"Category" : 1,
"Messages" : ["Msg1", "Msg2"],
"Value" : 1
},
{
"Category" : 1,
"Messages" : [],
"Value" : 10
},
{
"Category" : 1,
"Messages" : ["Msg1", "Msg3"],
"Value" : 100
},
{
"Category" : 2,
"Messages" : ["Msg4"],
"Value" : 1000
},
{
"Category" : 2,
"Messages" : ["Msg5"],
"Value" : 10000
},
{
"Category" : 3,
"Messages" : [],
"Value" : 100000
}
Run Code Online (Sandbox Code Playgroud)
我们希望按"类别"进行分组,同时总结"价值"并合并"消息".我试过这个聚合管道:
{group : {
_id : "$Category",
Value : { …Run Code Online (Sandbox Code Playgroud) 这个查询有什么问题?我试图在mongodb服务器上运行它并收到如下错误 - "异常:错误的查询:BadValue未知的顶级操作符:$ gte".有人能告诉我它有什么问题吗?
db.scores.aggregate([
{
$match: {
$or: [
{ $gte: [ "$score", 30 ] },
{ $lte: [ "$score", 60 ] }
]
}
},
{
$group: {
_id: "$gamer",
games: { $sum: 1 }
}
}
])
Run Code Online (Sandbox Code Playgroud)
样本数据 :
{
"_id" : "545665cef9c60c133d2bce72",
"score" : 85,
"gamer" : "Latern"
}
/* 1 */
{
"_id" : "545665cef9c60c133d2bce73",
"score" : 10,
"gamer" : "BADA55"
}
/* 2 */
{
"_id" : "545665cef9c60c133d2bce74",
"score" : 62,
"gamer" : "BADA55" …Run Code Online (Sandbox Code Playgroud)