我有这个问题:
produits = yield motor.Op(db.users.aggregate, [{"$unwind":"$pup"},{"$match":{"pup.spec.np":nomp}}, {"$group":{"_id":"$pup.spec.id","pup":{"$push":"$pup"}}}])
Run Code Online (Sandbox Code Playgroud)
结果给了我这个:
print produits
{u'ok': 1.0, u'result': [{u'_id': None, u'pup': [{u'avt': {u'fto': ..all the results}}]}]}
Run Code Online (Sandbox Code Playgroud)
所以我能做到:
prod = produits["result"]
[{u'_id': None, u'pup': [{u'avt': {u'fto': ..all the results}}]}]
Run Code Online (Sandbox Code Playgroud)
但我怎么隐藏"_id"所以我只能得到
[{u'pup': [{u'avt': {u'fto': ..all the results}}]}]
Run Code Online (Sandbox Code Playgroud)
在正常的查询中,我只是添加类似{"_id":0}这里的东西它不起作用.
我是mongo和nodejs的新手我作为查询的结果我有一个json,我只想将结果作为http请求返回,如下所示:
app.get('/itesms', function(req, res) {
items.find().toArray(function (err, array) {
res.send(array);
})
});
Run Code Online (Sandbox Code Playgroud)
它有效,唯一的问题是我想从结果中隐藏_id字段(递归).有什么建议以优雅的方式做到这一点?
这是一个非常简单的问题,只是有一个非常糟糕的大脑冻结.在我的聚合中,我只想使用$ project删除'_id'字段,但返回其他所有内容.但是我得到了
"$ projection需要至少一个输出字段"
我想会是这样的:
db.coll.aggregate( [ { $match .... }, { $project: { _id: 0 }}])
Run Code Online (Sandbox Code Playgroud)
谢谢
我想得到没有_id字段的聚合管道的结果.我知道如果你明确提供其他字段作为投影的输出,这是可能的.但是,¿我怎样才能在查找电话中模仿$ projec?
这就是我想要的(没有明确包含的字段):
db.col.find({},{_id:0})
Run Code Online (Sandbox Code Playgroud)
但在聚合框架中似乎是不可能的:
db.col.aggregate([{'$project': {_id:0}}])
Error: Printing Stack Trace
at printStackTrace (src/mongo/shell/utils.js:37:15)
at DBCollection.aggregate (src/mongo/shell/collection.js:927:9)
at (shell):1:11
2013-10-07T16:36:09.273+0200 aggregate failed: {
"errmsg" : "exception: $projection requires at least one output field",
"code" : 16403,
"ok" : 0
} at src/mongo/shell/collection.js:928
Run Code Online (Sandbox Code Playgroud)
有没有想过解决这个问题?