我看到的解决方案很少,但这些并不是我的解决方案。我有一个名称结果的数据库,集合名称是如下标记:
db.marks.find();
{ "_id" : ObjectId("54f57522627af4bfdcf79764"), "name" : "John", "scroe1" : 23, "score2" : 21, "score5" : 12 }
{ "_id" : ObjectId("54f5761a627af4bfdcf79765"), "name" : "Mike", "scroe2" : 22, "score3" : 20, "score4" : 22 }
{ "_id" : ObjectId("559d0bc521cb2e056507c3e3"), "name" : "Bush", "score2" : 30 }
我试过
var doc=db.marks.findOne(); for (var key in doc) print(key);
我得到了
_id
name
score1
score2
score5
但是我希望收藏中的所有密钥如下:
_id, name, score1, score2, score3, score4, score5
名 scroe1 score2 score3here
答案 0 :(得分:2)
findOne只会返回第一个找到的文件。由于您列出的第一个文档没有score3和score4键,因此不会显示它们。如果要在所有文档中显示所有根级别密钥,则需要遍历db中的所有文档。
expect(_.combinations([1, 2], 1, false)).to.be.equal([[1],[2]])
expect(_.combinations([1, 2], 1, true)).to.be.equal([[1],[2]])
expect(_.combinations([1, 2, 3], 2, false)).to.be.equal([[1,2],[1,3],[2,3]])
expect(_.combinations([1, 2, 3], 2, true)).to.be.equal([[1,2],[1,3],[2,3],[2,1],[3,1],[3,2]])
expect(_.combinations([1, 2, 3, 4], 3, false)).to.be.equal([[1,2,3],[1,2,4],[1,3,4],[2,1,4],[2,3,4],[3,4,1]])
expect(_.combinations([1, 2, 3, 4], 3, true)).to.be.equal([[1,2,3],[1,2,4],[1,3,4],[2,1,4],[2,3,1],[2,3,4],[3,1,2],[3,4,1],[3,4,2],[4,1,2],[4,1,3],[4,2,3]])
答案 1 :(得分:0)
Mongodb find()
命令有两个参数,一个是查询,第二个是投影。
类似于db.collection.find(query,projection)
。
如果文档是db.myCol.find();
,则返回:
{
{
_id:1
name: ''hello',
age: 23
}, {
_id:2
name: ''bollo',
age: 27
}
}
db.myCol.find({},{_id:1});
返回:
1
2
答案 2 :(得分:0)
mr = db.runCommand({
"mapreduce" : "my_collection",
"map" : function() {
for (var key in this) { emit(key, null); }
},
"reduce" : function(key, stuff) { return null; },
"out": "my_collection" + "_keys"
})
然后对结果集合进行不同的查找,以便找到所有键:
db[mr.result].distinct("_id")
["foo", "bar", "baz", "_id", ...]