小编Bla*_*ven的帖子

如何使用es6样式导入导入MongoDB?

希望这是一个简单的问题.我正在尝试使用es6 import-from样式导入MongoDB.如果我导入使用节点要求它工作正常.

let mongo = require('mongodb');
let MongoClient = mongo.MongoClient;
Run Code Online (Sandbox Code Playgroud)

但是,如果我以es6方式导入它,它会在没有错误或日志的情况下中断.

import {MongoClient} from 'mongodb';
Run Code Online (Sandbox Code Playgroud)

但是在编译/运行时它不会中断它只会在我尝试使用MongoClient执行任何操作时中断.

这是我的Db Manager课程 -

import {MongoClient} from 'mongodb';

export class DbManager {

  constructor() {
    console.log('Constructing DB Connection');
  }

}
Run Code Online (Sandbox Code Playgroud)

当我运行我的服务器时,我从其他管理器和事件中获取了几个日志.

mycomputer myuser$ ./start.sh
Server Constructing
Route Manager Constructing
Initializing Route: Static
Constructing DB Connection
http server started on port: 8000
Run Code Online (Sandbox Code Playgroud)

但是,如果我执行MongoClient的console.log,则根本没有输出.

import {MongoClient} from 'mongodb';

export class DbManager {

  constructor() {
    console.log('Constructing DB Connection');
    console.log(MongoClient);
  }

}
Run Code Online (Sandbox Code Playgroud)

输出看起来像这样 -

mycomputer myuser$ ./start.sh
mycomputer myuser$
Run Code Online (Sandbox Code Playgroud)

没有编译错误,所以我不明白为什么这不起作用.此外,我不明白为什么没有任何日志!这是最后发生的事情之一,至少应该记录,直到我想到这一点.如果你想 …

javascript mongodb node.js ecmascript-6 systemjs

14
推荐指数
3
解决办法
5050
查看次数

MongoDB匹配$ type的数组?

我有一个包含284.116条推文的MongoDb集合.问题是某些对象中的"author"字段是对象类型,但在其他对象中 - 这个"author"字段是数组类型.所以问题是我想过滤哪些是Array,哪些是Object.

例如:作者字段的类型是对象.

{
    "_id" : ObjectId("55edfbd11a87d41d987a6dc1"),
    "tweet" : "Back in my dorm, yay!",
    "uri" : "https://twitter.com/natalylug0/status/640994018529181696",
    "date" : "2015-09-08 00:04:17",
    "country" : "U.S.A.",
    "city" : "Texas",
    "state" : "Dallas",
    "author" : {
        "username" : "Nataly",
        "uri" : "https://twitter.com/natalylug0",
        "screenname" : "natalylug0"
    }
}
Run Code Online (Sandbox Code Playgroud)

而另一个:作者字段的类型是数组.

{
    "_id" : ObjectId("55ee3a00e11fbb1030d659fe"),
    "author" : [ 
        {
            "username" : "Relapsed Shini",
            "uri" : "https://twitter.com/iPictoraL",
            "screenname" : "iPictoraL"
        }
    ],
    "tweet" : "@zumbiezuza  ily zoeeeeeeee",
    "uri" : "https://twitter.com/iPictoraL/status/641060812140900352",
    "date" : "2015-09-08 01:29:42",
    "country" : …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query

12
推荐指数
3
解决办法
5435
查看次数

使用MongoDB Java 3.0驱动程序批量Upsert

在早期版本的MongoDB Java驱动程序中,要运行查询并对结果执行无序批量upsert,我们所做的就是:

BulkWriteOperation bulk = dbCollection.initializeUnorderedBulkOperation();
    bulk.find(searchQuery).upsert().update(new BasicDBObject("$set", getDbObjectModel()));
Run Code Online (Sandbox Code Playgroud)

但是在版本3中,随着Bson Document支持和MongoCollection.bulkWrite()方法的引入,如何才能做到这一点?

我试过这个:

List<WriteModel<Document>> documentList = new ArrayList<>();

collection.bulkWrite(documentList, new BulkWriteOptions().ordered(false));
Run Code Online (Sandbox Code Playgroud)

但是,我需要upsert功能.

谢谢.

java upsert mongodb mongo-java-driver

11
推荐指数
2
解决办法
1万
查看次数

Mongodb汇总多个日期范围的$ group

在我的汇总中,流中的每个文档都有一个日期.

我需要在日期范围内总结一些值.

IE浏览器.

{
    value: 3,
    date: [SoME TIME STAMP]
},
{
    value: 4,
    date: [SoME TIME STAMP]
},
{
    value: 1,
    date: [SoME TIME STAMP]
},
{
    value: -6,
    date: [SoME TIME STAMP]
}
Run Code Online (Sandbox Code Playgroud)

我希望能够根据日期范围对这些文档进行分组.IE:1-7天前,8-15天前.和15-30天前.

db.Collection.aggregate([
{$match: {some matching}},
{$group: {What should i do here??}}
])
Run Code Online (Sandbox Code Playgroud)

我当然可以做3种不同的聚合,在日期上有3种不同的$ match.

是否可以在一次运行中执行所有$ group并将"value"字段相加?

mongodb mongodb-query aggregation-framework

11
推荐指数
1
解决办法
2万
查看次数

以angular2显示嵌入的图像

我正在开发一个angular2项目,它涉及直接从数据库加载图像(base64编码).在angular1中,可以简单地加载它如下:

<img data-ng-src="data:image/jpg;base64,{{entry.img}}" />
Run Code Online (Sandbox Code Playgroud)

其中entry.img是原始图像数据.但是,我不知道如何在angular2中这样做.我试过了

<img [src]="data:image/jpg;base64,{{entry.img}}" />
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为angular仍会尝试从URL加载图像.

angularjs angular

11
推荐指数
1
解决办法
2万
查看次数

Mongoose查找array.length大于0的所有文档并对数据进行排序

我正在使用mongoose在MongoDB上执行CRUD操作.这就是我的架构的外观.

var EmployeeSchema = new Schema({
      name: String,
      description: {
        type: String,
        default: 'No description'
      },
      departments: []

    });
Run Code Online (Sandbox Code Playgroud)

每个员工都可以属于多个部门.Departments数组看起来像[1,2,3].在这种情况下,departments.length = 3.如果员工不属于任何部门,则departments.length将等于0.

我需要找到EmployeeSchema.departments.length> 0的所有员工,如果查询返回超过10条记录,我只需要获得最多没有部门的员工.

是否可以使用Mongoose.find()来获得所需的结果?

mongoose mongodb node.js mongodb-query

10
推荐指数
2
解决办法
1万
查看次数

MongoDB:聚合框架:获取每个分组ID的最新日期文档

我想获得每个电台的最后一个文件以及所有其他字段:

{
        "_id" : ObjectId("535f5d074f075c37fff4cc74"),
        "station" : "OR",
        "t" : 86,
        "dt" : ISODate("2014-04-29T08:02:57.165Z")
}
{
        "_id" : ObjectId("535f5d114f075c37fff4cc75"),
        "station" : "OR",
        "t" : 82,
        "dt" : ISODate("2014-04-29T08:02:57.165Z")
}
{
        "_id" : ObjectId("535f5d364f075c37fff4cc76"),
        "station" : "WA",
        "t" : 79,
        "dt" : ISODate("2014-04-29T08:02:57.165Z")
}
Run Code Online (Sandbox Code Playgroud)

我需要为每站最新的dt设备和站点.使用聚合框架:

db.temperature.aggregate([{$sort:{"dt":1}},{$group:{"_id":"$station", result:{$last:"$dt"}, t:{$last:"$t"}}}])
Run Code Online (Sandbox Code Playgroud)

回报

{
        "result" : [
                {
                        "_id" : "WA",
                        "result" : ISODate("2014-04-29T08:02:57.165Z"),
                        "t" : 79
                },
                {
                        "_id" : "OR",
                        "result" : ISODate("2014-04-29T08:02:57.165Z"),
                        "t" : 82
                }
        ],
        "ok" : 1
}
Run Code Online (Sandbox Code Playgroud)

这是最有效的方法吗? …

mongodb aggregation-framework

9
推荐指数
1
解决办法
7034
查看次数

重命名Array中的子文档字段

考虑下面的文档,我如何将'techId1'重命名为'techId'.我尝试了不同的方法,无法让它发挥作用.

{
        "_id" : ObjectId("55840f49e0b"),
        "__v" : 0,
        "accessCard" : "123456789",
        "checkouts" : [ 
            {
                "user" : ObjectId("5571e7619f"),
                "_id" : ObjectId("55840f49e0bf"),
                "date" : ISODate("2015-06-19T12:45:52.339Z"),
                "techId1" : ObjectId("553d9cbcaf")
            }, 
            {
                "user" : ObjectId("5571e7619f15"),
                "_id" : ObjectId("55880e8ee0bf"),
                "date" : ISODate("2015-06-22T13:01:51.672Z"),
                "techId1" : ObjectId("55b7db39989")
            }
        ],
        "created" : ISODate("2015-06-19T12:47:05.422Z"),
        "date" : ISODate("2015-06-19T12:45:52.339Z"),
        "location" : ObjectId("55743c8ddbda"),
        "model" : "model1",
        "order" : ObjectId("55840f49e0bf"),
        "rid" : "987654321",
        "serialNumber" : "AHSJSHSKSK",
        "user" : ObjectId("5571e7619f1"),
        "techId" : ObjectId("55b7db399")
    }
Run Code Online (Sandbox Code Playgroud)

在mongo控制台我试过,这给了我好,但没有任何实际更新.

collection.update({"checkouts._id":ObjectId("55840f49e0b")},{ $rename: { "techId1": "techId" } });
Run Code Online (Sandbox Code Playgroud)

我也试过这个给我一个错误."不能使用该部分(checkouts.techId1的检查)来遍历元素" …

mongoose mongodb mongodb-query

9
推荐指数
1
解决办法
3583
查看次数

如何在mongo聚合$ group $ cond中使用$ in或$ nin

我希望通过拥有$或者财产来获得$ cond的$ sum:

db.collectionName.aggregate(
{
   "$group": {
     "_id":'$created_at',
     "count": {"$sum": 1},
     "count_failure": {
         "$sum": {
           "$cond": [
               {
                 "$id":
                  { "$in": [ 0,100,101,102,103,104,105 ] }
               }, 
               1,
               0
              ] 
           }
         }
    }  
 }
)
Run Code Online (Sandbox Code Playgroud)

但错误说: Invalid operator "$id"

语法有什么问题?或者我错误地写了查询.

目前我通过以下方式实现此目标

db.collectionName.aggregate(
{
   "$group": {
     "_id":'$created_at',
     "count": {"$sum": 1},
     "count_failure": {
         "$sum": {
           "$cond": [
               {
                 "$or":[
                  { "$eq": [ "$id", 0 ] },
                  { "$eq": [ "$id", 100 ]},
                  { "$eq": [ "$id", 101 ]},
                  { "$eq": [ "$id", 102 …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework

9
推荐指数
1
解决办法
8823
查看次数

在Mongodb上使用地理空间索引的全文搜索

假设我想开发一个Android应用程序,允许用户搜索距离您最近的酒店.这在当今的应用程序中非常常见,例如AirBnb.

这是我正在使用的数据集:

{
    "name" : "The Most Amazing Hotel",
    "city" : "India",
    "type": "Point"
    "coord": [
        -56.16082,
        61.15392
      ]
}

{
    "name" : "The Most Incredible Hotel",
    "city" : "India",
    "type": "Point"
    "coord": [
        -56.56285,
        61.34590
      ]
}

{
    "name" : "The Fantastic GuestHouse",
    "city" : "India",
    "type": "Point"
    "coord": [
        -56.47085,
        61.11357
      ]
}
Run Code Online (Sandbox Code Playgroud)

现在,我想在字段上创建一个文本索引,name以便按名称搜索,然后根据坐标按地理空间索引排序.

因此,如果我搜索"The Most"这个词,它将按名称搜索"The Most"并返回最近的酒店,其中包含"The Most in them".

mongodb甚至支持这种类型的搜索吗?

我在这里阅读mongodb的指南:https://docs.mongodb.org/manual/core/index-text/

复合文本索引不能包含任何其他特殊索引类型,例如多键或地理空间索引字段.

据我了解,我不是在创建复合文本索引.这是一个简单的文本索引,这意味着我只是索引name字段的文本而不是cityAND name字段.

full-text-search geospatial mongodb mongodb-query

9
推荐指数
1
解决办法
2315
查看次数