/// <summary> /// Loads JSON object identified by OID from the collection. /// </summary> /// <remarks> /// Returns <c>null</c> if object is not found. /// </remarks> /// <param name="cname">Cname.</param> /// <param name="oid">Oid.</param> public BSONIterator Load(string cname, BSONOid oid) { CheckDisposed(); IntPtr cptr = _ejdbgetcoll(_db, cname); if (cptr == IntPtr.Zero) { return(null); } //static extern IntPtr _ejdbloadbson([In] IntPtr coll, [In] byte[] oid); byte[] bsdata = BsonPtrIntoByteArray(_ejdbloadbson(cptr, oid.ToBytes())); if (bsdata.Length == 0) { return(null); } return(new BSONIterator(bsdata)); }
/// <summary> /// Loads JSON object identified by OID from the collection. /// </summary> /// <remarks> /// Returns <c>null</c> if object is not found. /// </remarks> /// <param name="cname">Cname.</param> /// <param name="oid">Oid.</param> public BSONIterator Load(string cname, BSONOid oid) { CheckDisposed(); IntPtr cptr = _ejdbgetcoll(_db, cname); if (cptr == IntPtr.Zero) { return null; } //static extern IntPtr _ejdbloadbson([In] IntPtr coll, [In] byte[] oid); byte[] bsdata = BsonPtrIntoByteArray(_ejdbloadbson(cptr, oid.ToBytes())); if (bsdata.Length == 0) { return null; } return new BSONIterator(bsdata); }
public void TestIterate2() { var doc = new BSONDocument(); doc["a"] = "av"; doc["b"] = BSONDocument.ValueOf(new{ cc = 1 }); doc["d"] = new BSONOid("51b9f3af98195c4600000000"); Assert.AreEqual(3, doc.KeysCount); //Console.WriteLine(doc.KeysCount); //Console.WriteLine(doc.ToDebugDataString()); //2E-00-00-00 +4 //02-61-00-03-00-00-00-61-76-00 +10 (14) //03-62-00 +3 (17) "d" = //0D-00-00-00 +4 (21) doc len = 13 //10-63-63-00-01-00-00-00 -00 +9 (30) //07-64-00 +3 (33) //51-B9-F3-AF-98-19-5C-46-00-00-00-00 +12 (45) //00 +1 (46) Assert.AreEqual("2E-00-00-00-" + "02-61-00-03-00-00-00-61-76-00-" + "03-62-00-" + "0D-00-00-00-" + "10-63-63-00-01-00-00-00-00-" + "07-64-00-" + "51-B9-F3-AF-98-19-5C-46-00-00-00-00-" + "00", doc.ToDebugDataString()); BSONIterator it = new BSONIterator(doc); int c = 0; foreach (var bt in it) { if (c == 0) { Assert.IsTrue(bt == BSONType.STRING); } if (c == 1) { Assert.IsTrue(bt == BSONType.OBJECT); } if (c == 2) { Assert.IsTrue(bt == BSONType.OID); } ++c; } bool thrown = false; Assert.IsTrue(it.Disposed); try { it.Next(); } catch (ObjectDisposedException) { thrown = true; } Assert.IsTrue(thrown); c = 0; it = new BSONIterator(doc); foreach (var bv in it.Values()) { if (c == 0) { Assert.AreEqual("a", bv.Key); Assert.AreEqual("av", bv.Value); } if (c == 1) { Assert.AreEqual("b", bv.Key); BSONDocument sdoc = bv.Value as BSONDocument; Assert.IsNotNull(sdoc); foreach (var bv2 in new BSONIterator(sdoc).Values()) { Assert.AreEqual("cc", bv2.Key); Assert.AreEqual(1, bv2.Value); Assert.AreEqual(BSONType.INT, bv2.BSONType); } } if (c == 2) { Assert.AreEqual(BSONType.OID, bv.BSONType); Assert.IsInstanceOf(typeof(BSONOid), bv.Value); var oid = bv.Value as BSONOid; Assert.AreEqual("51b9f3af98195c4600000000", oid.ToString()); } c++; } }
public void TestIterate2() { var doc = new BSONDocument(); doc["a"] = "av"; doc["b"] = BSONDocument.ValueOf(new{cc = 1}); doc["d"] = new BSONOid("51b9f3af98195c4600000000"); Assert.AreEqual(3, doc.KeysCount); //Console.WriteLine(doc.KeysCount); //Console.WriteLine(doc.ToDebugDataString()); //2E-00-00-00 +4 //02-61-00-03-00-00-00-61-76-00 +10 (14) //03-62-00 +3 (17) "d" = //0D-00-00-00 +4 (21) doc len = 13 //10-63-63-00-01-00-00-00 -00 +9 (30) //07-64-00 +3 (33) //51-B9-F3-AF-98-19-5C-46-00-00-00-00 +12 (45) //00 +1 (46) Assert.AreEqual("2E-00-00-00-" + "02-61-00-03-00-00-00-61-76-00-" + "03-62-00-" + "0D-00-00-00-" + "10-63-63-00-01-00-00-00-00-" + "07-64-00-" + "51-B9-F3-AF-98-19-5C-46-00-00-00-00-" + "00", doc.ToDebugDataString()); BSONIterator it = new BSONIterator(doc); int c = 0; foreach (var bt in it) { if (c == 0) { Assert.IsTrue(bt == BSONType.STRING); } if (c == 1) { Assert.IsTrue(bt == BSONType.OBJECT); } if (c == 2) { Assert.IsTrue(bt == BSONType.OID); } ++c; } bool thrown = false; Assert.IsTrue(it.Disposed); try { it.Next(); } catch (ObjectDisposedException) { thrown = true; } Assert.IsTrue(thrown); c = 0; it = new BSONIterator(doc); foreach (var bv in it.Values()) { if (c == 0) { Assert.AreEqual("a", bv.Key); Assert.AreEqual("av", bv.Value); } if (c == 1) { Assert.AreEqual("b", bv.Key); BSONDocument sdoc = bv.Value as BSONDocument; Assert.IsNotNull(sdoc); foreach (var bv2 in new BSONIterator(sdoc).Values()) { Assert.AreEqual("cc", bv2.Key); Assert.AreEqual(1, bv2.Value); Assert.AreEqual(BSONType.INT, bv2.BSONType); } } if (c == 2) { Assert.AreEqual(BSONType.OID, bv.BSONType); Assert.IsInstanceOf(typeof(BSONOid), bv.Value); var oid = bv.Value as BSONOid; Assert.AreEqual("51b9f3af98195c4600000000", oid.ToString()); } c++; } }
public BSONDocument SetOID(int idx, BSONOid oid) { return base.SetOID(idx.ToString(), oid); }
public BSONArray(BSONOid[] arr) { for (var i = 0; i < arr.Length; ++i) { SetOID(i, arr[i]); } }