MongoDBにドキュメントがあり、このドキュメントのObjectIdを取得したいのですが、これまでにこれを行うメソッドが見つかりませんでした。
クエリの例:
user= db.users.find({userName:"Andressa"})
これはこれを返します:
{ "_id" : ObjectId("53b1c579bdf3de74f76bdac9"), "userid" : 0, "userName" : "Andressa", "userEmail" : "[email protected]", "teams" : [ 1, 2, 3 ] }
ObjectIdに別のクエリを実行させたい。
例:
userID = `user._id();` //but this does not work, of course, its an example
したがって、ObjectIdを使用して、次のような別のクエリを実行できます。
userFind = db.users.find({_id: userID})
更新:このコード:
db.teams.find({_id:{$in: user.teams}})
このエラーを返します:
error: {
"$err" : "Can't canonicalize query: BadValue $in needs an array",
"code" : 17287
誰か知っていますか?
わかった!実際、私はこのコードでそれを行うことができました:
ちょうど置く代わりに:
user = db.users.findOne({userName:"And"})
私はちょうどしました:
var user = db.users.findOne({userName:"And"})
そして
user._id
objectId( "someId")を返します。変数に保持したい場合は、次のようにします。
var Id = user._id.
2番目の質問についてはわかりません。
Mongoシェルでは、これを使用して_id
を取得できます。
user._id.str
または
user._id.toString()
ドキュメントを参照してください: http://docs.mongodb.org/manual/reference/method/ObjectId.valueOf/
私は同じ問題であると思われるものに遭遇しました-未知のmongoドキュメントからObjectIdを取得する方法。汎用のデータコンテキストを構築し、更新および削除メソッド内に_idが必要でした。これを行う方法についての回答を探しているときにあなたの質問を見つけたので、私は最終的に私のために働いたものを投稿することにしました。
private BsonValue GetId<TEntity>(TEntity entity)
{
var bsonDoc = entity.ToBsonDocument();
return bsonDoc.GetElement("_id").Value;
}
次に、次のように使用します。
var id = GetId<TEntity>(entity);
var filter = builder.Eq("_id", id);
var doc = collection.Find(filter).SingleOrDefault();
お役に立てれば。
これを行うには、find()メソッドを使用できます。
db.collection.find()メソッドは実際のドキュメントを返しませんが、カーソルをドキュメントに返します。カーソルを反復することにより、そのドキュメント内のフィールドになります。
コード:
var cursor=db.collection.find()
var objectId= cursor.next()._id
上記のステートメントは、現在のカーソルインスタンスからObjectIdの値を取得します。すべてのobjectIdを取得する場合、カーソルを反復処理することにより、ObjectIdのすべての値を取得します。
最初のステップで受信したobjectIdを使用してドキュメントを直接検索するには、次のコードスニペットを使用できます。
db.collection.find( { "_id": objectId},{ fields Of Your Choice } )