小编Jam*_*ang的帖子

在upsert上更新时,mongodb $ addToSet到非数组字段

我最近的项目遇到了与此问题相同的问题:问题

db.test.update(
    {name:"abc123", "config.a":1  }, 
    {$addToSet:{ config:{a:1,b:2} } }, 
    true 
)
Run Code Online (Sandbox Code Playgroud)

会产生这样的错误:

无法将$ addToSet应用于非数组字段

但改成后:

db.test.update(
    {name:"abc123", "config.a":{$in:[1]}  }, 
    {$addToSet:{ config:{a:1,b:2} } }, 
    true 
)
Run Code Online (Sandbox Code Playgroud)

它工作正常.

还引用了这个链接:答案

任何人都可以解释发生了什么吗?"config.a":1会将config变为对象吗?当"config.a":{$于:[1]}不会呢?

mongodb

7
推荐指数
2
解决办法
7611
查看次数

获取MongoDB中数组字段中给定元素的索引

想想这个MongoDB文档:

{_id:123, "food":[ "apple", "banana", "mango" ]}
Run Code Online (Sandbox Code Playgroud)

问题:如何获得mango食物的位置?

查询应该2在上面返回,并且不返回整个文档.

请显示工作查询.

mapreduce mongodb mongodb-query aggregation-framework

6
推荐指数
2
解决办法
7086
查看次数

mongodb $聚合空数组和多个文件

mongodb有以下文件:

> db.test.find({name:{$in:["abc","abc2"]}})
{ "_id" : 1, "name" : "abc", "scores" : [ ] }
{ "_id" : 2, "name" : "abc2", "scores" : [ 10, 20 ] }
Run Code Online (Sandbox Code Playgroud)

我希望得到每个文档的分数长度,我该怎么办?

尝试下面的命令:

db.test.aggregate({$match:{name:"abc2"}}, {$unwind: "$scores"}, {$group: {_id:null, count:{$sum:1}}} )
Run Code Online (Sandbox Code Playgroud)

结果:

{ "_id" : null, "count" : 2 }
Run Code Online (Sandbox Code Playgroud)

但是在命令之下:

db.test.aggregate({$match:{name:"abc"}}, {$unwind: "$scores"}, {$group: {_id:null, count:{$sum:1}}} )
Run Code Online (Sandbox Code Playgroud)

什么也没有.题:

  1. 如何在一个命令中获得2个或更多文档中的每个分数?
  2. 为什么第二个命令的结果什么都没有?我应该如何检查数组是否为空?

mongodb mongodb-query aggregation-framework

5
推荐指数
2
解决办法
9711
查看次数

Angular2 - 如何从打字稿打字定义文件中正确导出和导入?

假设我有一个发布到 NPM 的库,只有一行:

// file name index.js
function myLib(x) {return x;}
Run Code Online (Sandbox Code Playgroud)

想要将它导入到app.component.ts这个 repo

https://github.com/AngularClass/angular2-webpack-starter/blob/master/src/app/app.component.ts

之后npm install myLib,并将index.d.ts文件创建node_modules/myLib/

export default function myLib (x: any): any;
// or 
// declare function myLib (x: any): any;
// export default myLib;
Run Code Online (Sandbox Code Playgroud)

以下是我的问题:

Q1.将其消耗app.component.ts为:

import myLib from 'myLib'
console.log( myLib )
Run Code Online (Sandbox Code Playgroud)

结果是undefined,为什么?

Q2.如果更改代码如下:

import * as myLib from 'myLib'
console.log( myLib )
Run Code Online (Sandbox Code Playgroud)

结果是function myLib(x) {return x;},看起来是对的,但是

console.log( myLib(123) )
Run Code Online (Sandbox Code Playgroud)

Webpack 显示错误消息: …

typescript angular

5
推荐指数
0
解决办法
555
查看次数

如何将两个数组连接成一个对象数组

在 mongodb 3.4.5 中aggregate,有以下文档:

{id:1, a:['x','y','z'], b:[2,3,4]}
Run Code Online (Sandbox Code Playgroud)

并想将其更改为

{id:1, field: [{a:'x', b:2}, {a:'y', b:3}, {a:'z', b:4}]}
Run Code Online (Sandbox Code Playgroud)

aggregate阶段性怎么做?

我试图使用mongodb 3.4.5 的$arrayToObject功能,但不幸的是......

mongodb aggregation-framework

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