【发布时间】:2017-07-31 16:12:14
【问题描述】:
我正在开发一个简单的 dev-meet-designer 平台,我正在尝试创建一个更好的流行度排名算法。
我现有的代码是:
project_collection.aggregate([
{ "$project": {
"score": {
"$divide": [
"$views",
{ "$divide": [
{ "$subtract": [
new Date(),
"$created_at"
]},
10*60*30
]}
]},
"created_at": 1,
"views": 1
}}
], function(error, results) {
// do stuff
});
我想切换代码以计算文档中的likers 数组,并使用该值代替$views。非常感谢任何帮助!
这是一个示例文档结构:
{
"_id" : ObjectId("53d95d33a3ca780d096e5e7e"),
"name" : "Foo",
"tagline" : "This is a test project.",
"description" : "Foo bar.",
"tags" : [
"front end"
],
"owner" : "Noah",
"views" : 2,
"activity" : [
{
"options" : {
"type" : "started",
"owner" : "Noah"
}
},
{
"options" : {
"type" : "application",
"applicant" : "John"
}
}
],
"closed" : false,
"finished" : false,
"applicants" : [ "John" ],
"partners" : [],
"chat" : [],
"discussion" : [],
"url" : "",
"fireQuene" : [],
"likers" : [ "John", "Noah" ],
"created_at" : ISODate("2014-07-30T21:01:39.421Z")
}
【问题讨论】:
-
您应该在问题中发布文档结构以使其更清晰。没有它,很难判断查询应该是什么样子。
-
如果我使用上面的代码和示例文档,结果的 JSON 将是:
[{"_id" : ObjectId("53d95d33a3ca780d096e5e7e"), "views" : 3, "created_at" : ISODate("2014-07-30T21:01:39.421Z"), "score" : 0.0001253727907694868}], @ChristianP。
标签: javascript node.js mongodb database