相关疑难解决方法(0)

如何在MongoDB中将集合导出为CSV?

如何将MongoDB集合中的所有记录导出到.csv文件中?

mongoexport --host localhost --db dbname --collection name --type=csv > test.csv
Run Code Online (Sandbox Code Playgroud)

这要求我指定我需要导出的字段的名称.我可以直接导出所有字段而不指定字段名称吗?

database csv mongodb schemaless

88
推荐指数
6
解决办法
12万
查看次数

$在聚合框架中展开对象

在MongoDB聚合框架中,我希望在对象(即JSON集合)上使用$ unwind运算符.看起来这不可能,是否有解决方法?有计划实施吗?

例如,从聚合文档中获取文章集合.假设有一个额外的字段"评级"是来自用户 - >评级的地图.你能算出每个用户的平均评分吗?

除此之外,我对聚合框架非常满意.

更新:这是每个请求的JSON集合的简化版本.我正在存储基因组数据.我不能真正使基因型成为一个数组,因为最常见的查找是获取随机人的基因型.

variants: [

    {
        name: 'variant1', 
        genotypes: {

            person1: 2,
            person2: 5,
            person3: 7,

        }
    }, 

    {
        name: 'variant2', 
        genotypes: {

            person1: 3,
            person2: 3,
            person3: 2,

        }
    }

]
Run Code Online (Sandbox Code Playgroud)

mongodb aggregation-framework

30
推荐指数
2
解决办法
3万
查看次数

使用map/reduce映射集合中的属性

更新:MongoDB的后续操作获取集合中所有键的名称.

正如Kristina所指出的,可以使用Mongodb的map/reduce来列出集合中的键:

db.things.insert( { type : ['dog', 'cat'] } );
db.things.insert( { egg : ['cat'] } );
db.things.insert( { type :  [] }); 
db.things.insert( { hello : []  } );

mr = db.runCommand({"mapreduce" : "things",
"map" : function() {
    for (var key in this) { emit(key, null); }
},  
"reduce" : function(key, stuff) { 
   return null;
}}) 

db[mr.result].distinct("_id")

//output: [ "_id", "egg", "hello", "type" ]
Run Code Online (Sandbox Code Playgroud)

只要我们想要只获得位于第一级深度的键,这就可以了.但是,它将无法检索位于更深层次的密钥.如果我们添加一条新记录:

db.things.insert({foo: {bar: {baaar: true}}})
Run Code Online (Sandbox Code Playgroud)

我们再次运行上面的map-reduce + distinct片段,我们将得到:

[ …
Run Code Online (Sandbox Code Playgroud)

mapreduce mongodb

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

MongoDB中的所有列

我想知道如何在MongoDB的表中找到所有列名,就像你SHOW COLUMNS FROM foo;在mysql中使用的那样.

mongodb

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

比较两个集合上的mongo diff

我有两个mongo集合,一个是生产环境,另一个是测试环境.我如何比较其中两个之间的差异?我尝试将它们转储到bson然后转换为json.但我不能对它们执行简单的差异,因为排序可能会有所不同,而且json文件太大而无法排序.

mongodb

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

返回MongoDB中字段的实际类型

在MongoDB中,使用$type,可以根据字段是否与BSON数据类型匹配来过滤搜索(请参阅DOCS).

例如.

db.posts.find({date2: {$type: 9}}, {date2: 1})
Run Code Online (Sandbox Code Playgroud)

返回:

{ 
    "_id" : ObjectId("4c0ec11e8fd2e65c0b010000"), 
    "date2" : "Fri Jul 09 2010 08:25:26 GMT" 
}
Run Code Online (Sandbox Code Playgroud)

我需要一个查询,告诉我该字段的实际类型是什么,对于集合中的每个字段.这可能与MongoDB有关吗?

mongodb mongodb-query aggregation-framework

15
推荐指数
3
解决办法
3万
查看次数

您可以在 MongoDB 中查询具有给定值的任何属性吗?

我开始使用 MongoDB,我想知道是否可以在数据存储中查询具有特定值的任何属性。

所以而不是:

db.foo.find({'color':'red'})
Run Code Online (Sandbox Code Playgroud)

我想看看你是否可以做类似的事情:

db.foo.find({'%':'red'})
Run Code Online (Sandbox Code Playgroud)

那可能吗?是否有用于属性槽通配符的语法?我尝试使用正则表达式,但这给了我一个错误。

mongodb

5
推荐指数
1
解决办法
1817
查看次数

从 MongoDB 中删除空字段

通常,您可以使用以下命令从集合中删除字段。但是,下面的代码不适用于空 ( "") 字段。如何删除 MongoDB 中的空字段?

db.collection.update({}, {$unset: {"": ""}}, {multi:true})
Run Code Online (Sandbox Code Playgroud)

当我尝试此操作时,我收到以下错误消息:

WriteResult({
    "nMatched" : 0,
    "nUpserted" : 0,
    "nModified" : 0,
    "writeError" : {
        "code" : 56,
        "errmsg" : "An empty update path is not valid."
    }
})
Run Code Online (Sandbox Code Playgroud)

mongodb nosql

4
推荐指数
2
解决办法
7300
查看次数

猫鼬:只返回文档中的键

我有一个文件如下:

var data={"john:"friend",
          "fruit":"banana",
           "tv":[{"livingroom":"led",
                   "bedroom":"lcd"
                   "fruit":"banana"}]}
Run Code Online (Sandbox Code Playgroud)

我试图返回一个包含所有唯一键的数组,如下所示:

["john","fruit,livingroom,bedroom]
Run Code Online (Sandbox Code Playgroud)

所以我有以下代码:

var mykeys=[];
database.find({},function(result){
    result.forEach(function(each){
         for (key in each){
             mykeys.push(key)
         };
    }});
Run Code Online (Sandbox Code Playgroud)

但这会返回一大堆我不需要的对象,例如:

[$__, isNew, errors, _doc, $__original_save, save, _pres, _posts....]
Run Code Online (Sandbox Code Playgroud)

无论如何我可以摆脱文档中没有的这些键吗?我知道这里的mapreduce答案MongoDB get the names of all the keys in a MongoDB collection但我不知道如何将它翻译成猫鼬。AFAIK 猫鼬不支持 runCommand。

mongoose mongodb node.js

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