0

mongodbのクエリに埋め込まれたコレクションの数を返したいのですが。

プロファイルと呼ばれるコレクションがあるとしましょう

var ProfileSchema = new Schema({
  uname: {
    type: String,
    required: true,
    index: true,
    unique: true
  },
  fname: String,
  lname: String,
  posts: [ObjectId]
}); 

uname、frame、lame、posts.lengthを選択するようにクエリするにはどうすればよいですか?ユーザーは何百もの投稿を持つことができるので、私は投稿コレクションをネットワーク経由で返したくありません。プロファイルスキーマに投稿IDを埋め込む必要がありますか?投稿用に定義された別のコレクションがすでにあるので、おそらくそれを取り除く必要があります。したがって、私は基本的に、外部キーの埋め込みコレクションとしてProfile.postsを使用しています。

4

1 に答える 1

5

$size演算子に関するMongoドキュメントの説明はこちらをご覧ください。

簡単に言うと、$ size演算子を使用して正確な配列サイズに基づいてクエリを実行できますが、配列サイズを取得したり、配列サイズの範囲に基づいてクエリを実行したりすることはできません。

提案がうまく機能すること(投稿の数である別のフィールドを保持すること)は、クエリでフィルター/範囲として使用でき、配列の大きさを知る必要があるときに返すことができます。投稿が他の場所に保存されているか、配列に埋め込まれているかに関係なく、投稿の数に基づいてクエリやフィルタリングを行う場合、このフィールドは非常に便利です。

同様の提案を持つ非常に類似した質問があります。

于 2012-06-03T21:14:28.487 に答える