申し訳ありませんが、私は MongoDB を初めて使用します。シャードの概念と、ハッシュされたシャード キーを介してサーバー間でデータを分散する方法を理解していると思います。
たとえば、シャードされたユーザーのコレクションがあり、_id_hashed のインデックスがあります (これまでのところ、ユーザーのデータベースが均等に分散されています)。その後、一定時間非アクティブだったユーザーをタイムアウトにする必要があります。
$c->update(array('session.lastLogged'=>array('$lt'=>$time - ($timeout*60))), array('$set' => array('session'=>'') ));
次のエラーが表示されます。
For non-multi updates, must have _id or full shard key ({ _id: "hashed" }) in query
ただし、クエリするIDがわからず、セッションデータが変更されるため、シャードキーとして機能できません
これは、データの構造またはクエリの問題ですか?