cevap
Bunun için yerleşik bir komut bulunmamaktadır. Bu belgeyi getir ve anahtarları kendin say.
Sergio haklı, bunu mongo'nun dışında yapmak zorundasınız.
Böyle bir şey yapabiliriz: Bu daha sonra üzerlerinde sorguları yapmak istiyorsanız böyle değerlerin önceden hesaplamak için genellikle iyi bir fikirdir
var count = 0;
for(k in obj) {count++;}
print(count);
Mongo olarak (çoğu NoSQL çözümlerinde olduğu gibi) (örneğin, " farklı anahtarların sayısı> 12 "), belki de yeni bir anahtar eklendiğinde her zaman artırdığınız yeni bir alan" keyCount "eklemeyi düşünmelisiniz.
Mongo konsolundaysanız, bunu yapmak için javascript yazabilirsiniz.
doc = db.coll.findOne({}); nKeys =0; for(k in doc){nKeys ++;} print(nKeys);
Bu
Yine de "Mongo'da dışında" olarak kabul edilecektir.Ayrıca sadece 'nKeys = Object.keys (doc) .length;' –
Eğer MongoDB 3.6 kullanılıyorsa ve daha yeni birleştirme yapısına rağmen. Belgeyi bir diziye dönüştürmek için bir toplama hattında $objectToArray
işlecini kullanın. Dönüş dizisi, orijinal belgedeki her alan/değer çifti için bir öğe içerir. Dönüş dizisindeki her öğe, k
ve v
iki alanı içeren bir belgedir.
belge kök referans
anda agregasyon boru hattı aşamasında işlenen üst düzey dokümana referans$$ROOT
sistem değişken yoluyla mümkün olur.
dizi alma konusunda, daha sonra sayıları ve fiili sayım $size
operatörün kullanımı ile elde edilir tutan bir alan oluşturmak için $addFields
boru hattı adımın kullanılmasını yararlanabilirsiniz. aşağıdaki gibi
Bütün bunlar
ifadeleri yerleştirerek tek boru hattında yapılabilir:db.collection.aggregate([
{
"$addFields": {
"count": {
"$size": {
"$objectToArray": "$$ROOT"
}
}
}
}
])
Örnek Çıktı
{
"_id" : ObjectId("5a7cd94520a31e44e0e7e282"),
"a" : 1.0,
"b" : 1.0,
"c" : 2.0,
"z" : 2.0,
"count" : 5
}
_id
alanını hariç tutmak için, kullanabilirsiniz $filter
operatörünün görevi:
db.collection.aggregate([
{
"$addFields": {
"count": {
"$size": {
"$filter": {
"input": { "$objectToArray": "$$ROOT" },
"as": "el",
"cond": { "$ne": [ "$$el.k", "_id" ] }
}
}
}
}
}
])
- 1. Java, bitshifts kullanırken, neden 1 << 32! = 1 << 31 << 1?
- 2. ValueError: num olmalıdır 1 <= num <2 değil, 3
- 3. Python nasıl</p> <pre><code>['a 1 a', 'a 2 a', 'a 3 a', 'a 4 a'] </code></pre> <p>teşekkür ederiz yazdırmak için ben alırım bütün desenleri
- 4. Doğru <2 nasıl uygulanır?
- 5. Perl: bunun <code>$b</code> sonunda</p> <ul> <li><pre><code>{ 'b' => { 'c' => 1, 'd' => 1, 'e' => 1 } }; </code></pre></li> </ul> <p>: Bunun sonunda referansı
- 6. XPath - tüm elemanlar alt elemanlara belge</p> <pre><code><a> <b> <c/> <d/> </b> <b> <c/> <d/> </b> </a> </code></pre> <p>Verilen
- 7. Ben <strong>OSB Eclipse</strong> 2 projeleri <strong>A</strong> ve <strong>B</strong> sahip tutulma
- 8. Bu garip koşullu operatör sözdizimi nedir?</p> <pre><code>bool bRes = (a < b) ? a=b, true : false; </code></pre> <p><code>a < b</code>, o zaman <code>a=b</code> infaz ve <code>bRes</code> doğrudur edilir:
- 9. X * 2 + 1 hesaplamanın kısa bir yolu var mı? <br> <code>x = x*2;</code><code>x *= 2;</code></p> <p>gibi yazılmış olabilir
- 10. @ (posedge Clk) arasındaki fark; bir <= 1'b1; ve @ (posedge Clk) a <= 1'b1;
- 11. Notepad ++ Bu benim veri</p> <pre><code>p=1 p=1 p=1 p=1 </code></pre> <p>Nasıl olur ise
- 12. İçindeki eleman sayısı <5 in <a1 <0</ a1><T>
- 13. Böyle <code>UIImage</code> den <code>UIBezierpath</code> alabilirim nasıl bir UIImage
- 14. Alt çizgi: Düz nesneye nesne dizisi. Sihir nedir? Bu basit, düz nesneye</p> <pre><code>[ { first: { blah: 1, baz: 2 } }, { second: { foo: 1, bar: 2 } } ] </code></pre> <p>:
- 15. Git, <<<<<<< HEAD dosyasına
- 16. İki-arg işlevi bir diziye nasıl uygulanır?</p> <pre><code>[a b c ...] </code></pre> <p>ve bir işlev <code>(f x y)</code>:
- 17. Toplamda 1 <= i <j <k <= n'de GLPK
- 18. <: <İş nasıl?
- 19. Bir vektör, düzenli, ardışık sekansların gruplarına nasıl bölümlenir?</p> <p>L1: 1 <br> L2:
- 20. Neden powershell() bazen çalıştırdığım kodu yazdırıyor?</p> <pre><code>function f { $a=2 } $a </code></pre> <p>O yazdırır:</p> <pre><code>C:\Users\vics> function f { $a=2 } $a </code></pre> <p>Neden bu kadar weired ben varsa
- 21. . geçen kullanıcı <a1> 1</ a1>
- 22. SQL, ben aynı veri herhangi bir sütun</p> <pre><code>Source data table: P1 P2 P3 ----------- a b a a a b c a b b b a </code></pre> <p>Ben böyle bir şey göstermek istiyorum görünen bir toplamı için tarafından daha sonra birden sütunlarda grubu saymaya çalışıyorum
- 23. Neden bir nesnenin gerçek değerine doğrudan erişemiyorum? <pre><code>[1,2].constructor </code></pre> <p>geçerlidir</p> oysa şu sözdizimi</p> <pre><code>{a:1,b:2}.constructor </code></pre> <p>geçersiz Neden
- 24. pandalar: nasıl aksi, kolon <code>B</code> 'ın değeri NaN değilse sütunda <code>A</code> değeri alacak sütunu <code>C</code> eklerim diğer iki sütunlara
- 25. Scala öğeleri toplayan bir fonksiyon nasıl tanımlanacağı rağmen</p> <pre><code>a.collect { case v: Int => v } res: Array[Int] = Array(1, 2) </code></pre> <p>,
- 26. Bu haskell sözdizimi nedir?</p> <pre><code>data A = A Int Int | B m :: A -> Int m a = case a of A{} -> 1 _ -> 2 </code></pre> <p>burada ne <code>A{}</code> nedir -
- 27. Harita <Long, MyObject> öğesini <1, >
- 28. İşte</p> <pre><code>[[a,3],[b,3]] </code></pre> <p>olduğunu</p> <p>sonucu olmalıdır
- 29. type = 1 << 0? Ile ne anlama geliyor?
- 30. css: 2 veya <code><thead></code> yılında <code><tr></code> daha varsa <tr>
Neden bu bir düşüş var? Bu oldukça meşru bir soru. Upvoting. –