希望这是一个简单的问题.我正在尝试使用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)
没有编译错误,所以我不明白为什么这不起作用.此外,我不明白为什么没有任何日志!这是最后发生的事情之一,至少应该记录,直到我想到这一点.如果你想 …
我有一个包含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 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功能.
谢谢.
在我的汇总中,流中的每个文档都有一个日期.
我需要在日期范围内总结一些值.
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"字段相加?
我正在开发一个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加载图像.
我正在使用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()来获得所需的结果?
我想获得每个电台的最后一个文件以及所有其他字段:
{
"_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)
这是最有效的方法吗? …
考虑下面的文档,我如何将'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的检查)来遍历元素" …
我希望通过拥有$或者财产来获得$ 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) 假设我想开发一个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字段.
mongodb ×9
mongoose ×2
node.js ×2
angular ×1
angularjs ×1
ecmascript-6 ×1
geospatial ×1
java ×1
javascript ×1
systemjs ×1
upsert ×1