5

我有一个具有许多动态属性的记录模型。我想向模型发出请求,并将响应作为 JSON 发送给客户端。但我想_id在这个模型中排除像和所有外键这样的字段。

我找到了一个有趣的答案如何排除某些键的值:如何从 Mongoid 中的嵌入式文档中排除字段?,但响应中的键仍然存在。

我有:

{
 "_id": 1,
 "name": "tom"
}

without方法使:

{
  "_id": nil,
 "name": "tom"
}

但我想要:

{
 "name": "tom"
}

是否可以从结果中删除或排除某些键和值?

4

2 回答 2

7

您不想从 mongoid 文档中删除字段,您要做的是从生成的 json 中删除字段。在您的控制器中,执行

render :json => @model.to_json(:except => :_id)

to_json 方法的文档http://apidock.com/rails/ActiveRecord/Serialization/to_json

于 2013-06-20T11:23:00.830 回答
1

取自以下 mongodb 文档:http ://docs.mongodb.org/manual/reference/method/db.collection.find/

从结果集中排除某些字段 以下示例选择符合选择条件的文档并从结果文档中排除一组字段:

db.products.find( { qty: { $gt: 25 } }, { _id: 0, qty: 0 } ) 查询返回集合 products 中 qty 大于 25 的所有文档。结果集中的文档将包含除 _id 和 qty 字段之外的所有字段,如下所示:

{ "item" : "pencil", "type" : "no.2" }
{ "item" : "bottle", "type" : "blue" }
{ "item" : "paper" }

我想 mongoid 正在将 _id 属性设置为 nil,因为 mongoid 模型具有一组已定义的属性(即使它们是动态的,_id,_type 等已定义)。也许您可以使用 mongodb 驱动程序进行尝试。

但我认为 RedXVII 的答案是更实用的方法

于 2013-06-20T11:58:56.437 回答