小编Bla*_*ven的帖子

Mongodb在组内聚合排序和限制

我有以下架构的待售物品集合:

var itemSchema = new Schema({
    "category" : { type : Schema.Types.ObjectId, ref : 'Category' },
    "merchant" : { type : Schema.Types.ObjectId, ref : 'Merchant' },
    "rating" : Number
})
Run Code Online (Sandbox Code Playgroud)

我继承了一个聚合查询,该查询返回与按类别划分的类别的项目,按商家分组,组按组中的最大评级排序:

Item.aggregate([
      { "$match" : { category : categoryId, merchant : { $ne : null }}},
      { "$group" : { _id : "$merchant", 
                    rating : { $max : "$rating" }, 
                    items : { $push : "$$ROOT" }}},
      { "$sort" : { rating : -1 }}
    ], { allowDiskUse : true …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework

4
推荐指数
1
解决办法
4842
查看次数

当前字段的聚合条件计数

我正在尝试编写一个聚合来计算有多少文档具有某些字段(即只有它们存在时才计算它们).对象看起来像这样:

{
        "_id" : ObjectId("5617731fe65e0b19101c7039"),
        "dateCreated" : ISODate("2015-10-09T07:56:15.068Z"),
        "dateSent" : ISODate("2015-10-09T07:56:16.682Z"),
        "dateAttempted" : ISODate("2015-10-09T07:56:16.682Z")
},
{
        "_id" : ObjectId("561e37bb537d381bb0ef0ae2"),
        "dateCreated" : ISODate("2015-10-14T11:08:43.306Z"),
        "dateSent" : ISODate("2015-10-14T11:09:51.618Z"),
        "dateAttempted" : ISODate("2015-10-14T11:09:51.618Z"),
        "dateViewed" : ISODate("2015-10-15T10:09:50.618Z"),
        "dateOpened" : ISODate("2015-10-15T10:10:01.618Z")
}
Run Code Online (Sandbox Code Playgroud)

我想迭代所有文档,计算字段存在的位置.期望的输出:

{
        "total" : 1000,
        "created" : 1000,
        "sent" : 990,
        "attempted" : 995
        "viewed" : 800,
        "opened" : 750
}
Run Code Online (Sandbox Code Playgroud)

如果此输出可以每天分组,则可获得奖励积分!我不希望为范围中的每个日期执行新的聚合.

这是我到目前为止所做的,但是没有用; 它为每个字段返回零

[
  {
    "$group": {
      "_id": {
        "$dayOfMonth": "$dateCreated"
      },
      "total": {
        "$sum": 1
      },
      "sent": {
        "$sum": "$dateSent"
      },
      "attempted": { …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework

4
推荐指数
1
解决办法
1436
查看次数

如何在架构内构造猫鼬架构?

我是mongodb的新手,我有一个像这样的数据模型

{
    last_updated: Date.now(),
    csgo_items:[
        {name: 'name', price: 1},
        {name: 'name', price: 1},
        {name: 'name', price: 1}
    ]
}
Run Code Online (Sandbox Code Playgroud)

我有一个“ last_updated”,然后有一个巨大的csgo物品清单。

我的问题是。我需要两个模式吗?一个是外层的两个属性,另一个是我的csgo项目模型的架构?

如果我这样做,我的模式将如何显示?

我有这样的项目架构。

var ItemSchema = new Schema({
    price: Number,
    name: String,
});
Run Code Online (Sandbox Code Playgroud)

我是否还需要另一个模式来为我的外部模式设置?

var CsgoSchema = new Schema({
    last_updated: Date,
    item: Array,
});
Run Code Online (Sandbox Code Playgroud)

它是否正确?

mongoose

4
推荐指数
1
解决办法
2260
查看次数

在ASP.Net Postback之后的<Head>中维护JavaScript代码.

正如标题所示,我在回发时维护代码时遇到问题.我在Head部分有一堆jQuery代码,这个工作正常,直到发生回发,之后它停止运行!

我怎样才能解决这个问题?头部没有在回发上阅读,有没有办法可以强制这种情况发生?

JavaScript是:

        <script type="text/javascript">
        $(document).ready(function()
        {
            $('.tablesorter tbody tr').tablesorter();

        $('.tablesearch tbody tr').quicksearch({
            position: 'before',
            attached: 'table.tablesearch',
            stripeRowClass: ['odd', 'even'],
            labelText: 'Search:',
            delay: 100
        });
       }); 
        </script>
Run Code Online (Sandbox Code Playgroud)

javascript asp.net jquery postback

3
推荐指数
1
解决办法
2559
查看次数

如何在Spark SQL中创建永久表

在我的项目中,我正在将数据从MongoDB传输到SparkSQL表以进行基于SQL的查询。但是Spark SQL让我创建了临时文件。当我要查询某些内容时,执行时间非常长,因为数据传输和映射操作会花费太多时间。

那么,我可以减少执行时间吗?我可以创建永久性Spark SQL表吗?我可以使用JDBC查询永久表吗?

我要添加代码和执行时间结果。我正在独立模式下执行所有操作。

package com.mongodb.spark.sql;

import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SQLContext;
import org.bson.BSONObject;

import com.mongodb.hadoop.MongoInputFormat;
import com.mongodb.spark.demo.Observation;
import com.mongodb.spark.demo.Sensor;

import scala.Tuple2;

public class SparkSqlMongo {

public static void main(String[] args) {

    Configuration conf = new Configuration();

    conf.set("mongo.job.input.format", "com.mongodb.hadoop.MongoInputFormat");
    conf.set("mongo.input.uri", "mongodb://localhost:27017/test.observations");

    Configuration sensConf = new Configuration();

    sensConf.set("mongo.job.input.format", "com.mongodb.hadoop.MongoInputFormat");
    sensConf.set("mongo.input.uri", "mongodb://localhost:27017/test.sens");

    SparkConf sconf = new SparkConf().setMaster("local[2]").setAppName("SQL DENEME").set("nsmc.connection.host",
            "mongodb:");

    JavaSparkContext sc = new JavaSparkContext(sconf);
    SQLContext sql = new SQLContext(sc); …
Run Code Online (Sandbox Code Playgroud)

java apache-spark apache-spark-sql

3
推荐指数
1
解决办法
4862
查看次数

在MongoDB聚合中返回整个对象

我有项目架构,其中我有各自餐厅的项目详细信息.我必须通过'类型'和'类别'找到特定餐厅和团体的所有项目(类型和类别是项目架构中的字段),我能够按照我的要求对项目进行分组,但我无法获得完整的项目宾语.我的查询:

db.items.aggregate([{
    '$match': {
        'restaurant': ObjectId("551111450712235c81620a57")
    }
}, {
    '$group': {
        id: {
            '$push': '$_id'
        }
        , _id: {
            type: '$type'
            , category: '$category'
        }
    }
}, {
    $project: {
        id: '$id'
    }
}])
Run Code Online (Sandbox Code Playgroud)

我已经看到一种方法,通过将每个字段值添加到组然后投影它.因为我的Item模式中有很多字段,所以我觉得这对我来说不是很好的解决方案,我是否可以获得完整的对象而不是Ids.

mongodb mongodb-query aggregation-framework

3
推荐指数
1
解决办法
3144
查看次数

如何在Mongoose中检索嵌入文档中数组的最后一个对象?

我在编写查询时遇到问题,无法检索Story文档中嵌入的Comments数组的最后一个对象.

当我执行db.stories.find()时,我的集合目前看起来像这样:

{
"_id" : ObjectId("55d3a39565698bbc68079e31"),
"author" : "Steven Chen",
"link" : "COCO",
"title" : "COCO",
"date" : ISODate("2015-08-18T21:28:53.629Z"),
"comments" : [
    {
        "author" : "Steven",
        "text" : "Major",
        "_id" : ObjectId("55d3a39565698bbc68079e32"),
        "date" : ISODate("2015-08-18T21:28:53.632Z")
    },
    {
        "text" : "Canada",
        "author" : "Steven",
        "_id" : ObjectId("55d3a39a65698bbc68079e33"),
        "date" : ISODate("2015-08-18T21:28:58.001Z")
    },
    {
        "text" : "Usa",
        "author" : "Steven",
        "_id" : ObjectId("55d3a39c65698bbc68079e34"),
        "date" : ISODate("2015-08-18T21:29:00.877Z")
    }
],
"__v" : 0
}
Run Code Online (Sandbox Code Playgroud)

我想根据Story文档的_id给出的日期检索最后一条评论.

我的代码的上下文是有一个带有注释列表的Story帖子,我想检索最后的注释并使用ajax将其作为JSON发送到我的客户端JS,以便可以使用最新/最新注释更新视图.

在这种情况下,带有"text:"Usa"的评论应该是获取的评论.

有人可以提供正确的方法来做到这一点,如果你能解释原因会更好吗?谢谢!

mongoose mongodb node.js mongodb-query

3
推荐指数
1
解决办法
2832
查看次数

使用 mongo Java Driver 3.0 从 Mongo 集合中获取字段的不同值时出现异常

我从 mongodb 获得了不同的字段值。当我在命令行中运行以下查询时,效果很好。 db.celldata.distinct("tenentId")

我正在使用 Mongo java 3.0 驱动程序,使用以下查询检索不同的值 MongoCursor<String> iterator = coll.distinct("tenantId", String.class).iterator();

当我运行查询时,出现以下异常 org.bson.BsonInvalidOperationException: readString can only be called when CurrentBSONType is STRING, not when CurrentBSONType is NULL.

java mongodb mongodb-java mongodb-query

3
推荐指数
1
解决办法
2723
查看次数

是否有一个很好的例子lodash的_.after方法

有没有一个很好的实际例子,说明如何在lodash库中使用_.after方法?

javascript lodash

3
推荐指数
1
解决办法
1473
查看次数

对查询中的多个日期范围进行计数

我有以下聚合查询,它给出给定日期范围内的计数 (countA)。在本例中为 01/01/2016-03/31/2016。是否可以添加第二个日期愤怒期(例如 04/01/2016-07/31/2016)并将其计为 countB?

db.getCollection('customers').aggregate(
    {$match: {"status": "Closed"}},
    {$unwind: "$lines"},
    {$match: {"lines.status": "Closed"}},
    {$match: {"lines.deliveryMethod": "Tech Delivers"}},
    {$match: {"date": {$gte: new Date('01/01/2016'), $lte: new Date('03/31/2016')}}},
    {$group:{_id:"$lines.productLine",countA: {$sum: 1}}}
)
Run Code Online (Sandbox Code Playgroud)

提前致谢

mongodb mongodb-query aggregation-framework

3
推荐指数
1
解决办法
1826
查看次数