27

どうにかして静的な (計算されていない) 値を持つカスタム フィールドを追加できますか?

送信前にオブジェクトを準備したいのですが、内部情報を含むいくつかのフィールドを削除し、エンティティ ID を含むフィールドを追加する必要があります。

たとえば、このようなオブジェクトを含むコレクション「テスト」があります

{_id: ObjectId(...), data: {...}}

そして、私はそれをに変換する必要があります

{data: {...}, entity_id: 54}

では、コードで結果をループせずに entity_id: 54 を追加するにはどうすればよいでしょうか?

db.test.aggregate({ $project: {_id: 0, data: 1, entity_id: ? } })

ありがとう

4

2 に答える 2

54

$literal は Mongo 2.6 で実装されたことに注意してください。したがって、次のように簡単に記述できます。

db.test.aggregate(
   {$project: {_id: 0, data: 1, entity_id: {$literal: 54}}})

$literalを参照してください。

于 2014-06-03T06:37:41.740 に答える
22

edit 2.6 の時点で$literal式が存在するため、今すぐ回避策を使用する必要はありません。

元の回答: これは本当にばかげているように聞こえるかもしれませんが、「no-op」式を使用して必要なものを「計算」できます。

例:

db.test.aggregate( { $project : {_id:0, data:1, entity_id: {$add: [54]} } } )

まさにこのユースケースに対して提案された$literalオペレーターがありましたが、まだ実装されていません。ここで投票できます。

于 2013-02-27T12:21:20.787 に答える